3

У меня есть процесс Python, запущенный из оболочки на Linux. На данный момент у меня нет физического доступа к этой машине, и я могу подключиться только через ssh.
Я знаю, что процесс python остановлен, и я подозреваю, что в этой оболочке есть трассировка ошибок.
Я могу получить pid оболочки, но не могу найти способ показать, что находится в этой оболочке. По сути, я ищу способ прочитать то, что уже есть, и не потерять этот вывод или закрыть оболочку. Каким будет инструмент Linux, чтобы иметь второе представление о том, что происходит в уже запущенной оболочке?

3 ответа3

5

Вот ответ на ServerFault:

setterm может вывести содержимое виртуальной консоли Linux:

setterm -file log.txt -dump [ttynumbers]

Однако он не имеет доступа к буферу прокрутки, только к тому, что отображается в данный момент.

Это будет работать, если вы хотите заглянуть в /dev/tty? не /dev/pts/* , я думаю. Используйте ps -e для определения tty номера рассматриваемой оболочки. Во время моих тестов я успешно вывел /dev/tty2 с помощью следующей команды:

sudo setterm -file log.txt -dump 2
2

Хотя вы не можете увидеть, что уже произошло (если только вы не можете вернуть этот сеанс), есть отличный инструмент под названием tmux который помогает с этим.

Просто установите (sudo apt install tmux), запустите его (tmux) и затем запустите нужный процесс внутри терминала tmux. Затем нажмите Ctrl+B, затем D, чтобы отсоединить его - это вернет вас к предыдущей оболочке и вы сможете закрыть терминал. Затем подключитесь к нему из SSH или откройте другой терминал (как хотите) и запустите tmux attach . Это вернет вас к вашему терминалу. Существуют и другие варианты, но это базовая форма использования tmux в разных сеансах терминала.

1

Традиционным инструментом для записи терминальной сессии является script . Он широко доступен, обычно по умолчанию, в большинстве Unix и Unix-подобных систем.

Некоторые эмуляторы терминалов, включая, конечно, xterm , и некоторые эмуляторы терминалов pc часто используемые на так называемом "консольном" устройстве настольного компьютера (т. Е. Непосредственно подключенная клавиатура и дисплей), имеют буфер обратной прокрутки, и вы можете вернуться к посмотрите предыдущее действие, и вы даже сможете скопировать и вставить его из прокрутки назад.

Действительно, урок здесь заключается в том, что (большинство) устройств TTY ничего не записывают - они просто пропускают это. Нужно организовать собственную запись, будь то запуск script или аналогичного инструмента записи или использование соответствующего эмулятора терминала.

(Кстати, в некоторых системах также есть "консольный буфер", но он записывает только выходные данные самого ядра, и доступ к нему осуществляется с помощью команды, обычно называемой dmesg .)

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