4

Я пытаюсь подключиться к роботу Khepera, используя последовательный интерфейс (под управлением Scientific Linux 6.1). Я использовал команду screen /dev/ttyS0 для связи, которая работала нормально, но затем я хотел закрыть его и использовать MATLAB, но я не нашел способа чтобы закрыть этот сеанс, поэтому я просто нажал X на рабочем экране окна терминала.

Теперь мой порт ttyS0 не может быть открыт. И MATLAB, и screen говорят, что он не может открыть этот порт.

Как я могу сбросить порт ttyS0? Я имею в виду один из вариантов - перезагрузить компьютер. Но как это сделать без перезагрузки?

Как правильно завершить последовательную связь?

Кроме того, что делает следующая команда? Я нашел его в Google и запустил, но ничего не произошло. Что-то плохое, что мне нужно исправить?

/sbin/agetty -L -f /etc/issueserial 9600 ttyS0 vt100

2 ответа2

4

Вы можете выполнить команду screen -ls для получения статуса всех текущих сеансов экрана. Затем используйте параметр screen -r для "повторного подключения" к отключенному сеансу screen и параметр -X для завершения сеанса.

Вот пример сеанса оболочки. Я использую опции -d -m для запуска сеанса screen в "отдельном" режиме (в фоновом режиме), чтобы имитировать закрытие сеанса с помощью X on the terminal window running screen . 5207 из вывода screen -ls экрана - это идентификационный номер процесса, который будет использоваться для "повторного подключения" к определенному сеансу screen .

$ screen -d -m /dev/ttyS0
$ screen -ls
There is a screen on:
    5207..host  (10/04/2011 10:16:50 AM)    (Detached)
1 Socket in /var/run/screen/S-user.

$ screen -r 5207 -X kill
$ screen -ls 
No Sockets found in /var/run/screen/S-user.

$ 
1

Как правильно завершить последовательную связь?

С точки зрения программирования - просто close() открытый дескриптор файла. Выход из программы делает это автоматически. Однако вы не вышли из экрана.

Одной из наиболее часто используемых функций экрана GNU является возможность отсоединения и повторного подключения к сеансам. Когда вы закрывали окно, серверная часть экрана оставалась работающей, и вы можете подключиться к ней с помощью screen -r .

Используйте Ca, k, чтобы фактически убить окно экрана.

Кроме того, что делает следующая команда? Я нашел его в Google и запустил, но ничего не произошло. Что-то плохое, что мне нужно исправить?

/sbin/agetty -L -f /etc/issueserial 9600 ttyS0 vt100

agetty - программа мониторинга TTY. Его работа состоит в том, чтобы повторно инициализировать конфигурацию терминального устройства и отобразить приглашение для входа в систему; Вы можете увидеть это в действии, переключившись на консольные запросы входа в систему на tty1 ... tty6 . 1

В этом случае, когда вы запустили agetty на своем конце, он отправил приглашение на вход в систему 2 роботу, который, вероятно, отбросил его как мусор. Обычно это безвредно, если робот каким-то образом не интерпретирует « login: » как "инициировать захват мира". Конфигурация, сделанная agetty не должна ничего ломать.


1 Обратите внимание, что getty не обрабатывает фактические логины - он просто запрашивает имя пользователя. Как только вы введете его, agetty запустит /sbin/login для выполнения процесса входа в систему.

2 Он также отправил бы содержимое текстового файла /etc/issueserial , но поскольку вы нашли команду в Google, скорее всего, у вас даже нет этого файла.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .