У меня есть процесс Python, запущенный из оболочки на Linux. На данный момент у меня нет физического доступа к этой машине, и я могу подключиться только через ssh.
Я знаю, что процесс python остановлен, и я подозреваю, что в этой оболочке есть трассировка ошибок.
Я могу получить pid оболочки, но не могу найти способ показать, что находится в этой оболочке. По сути, я ищу способ прочитать то, что уже есть, и не потерять этот вывод или закрыть оболочку.
Каким будет инструмент Linux, чтобы иметь второе представление о том, что происходит в уже запущенной оболочке?
3 ответа
Вот ответ на 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
Хотя вы не можете увидеть, что уже произошло (если только вы не можете вернуть этот сеанс), есть отличный инструмент под названием tmux
который помогает с этим.
Просто установите (sudo apt install tmux
), запустите его (tmux
) и затем запустите нужный процесс внутри терминала tmux. Затем нажмите Ctrl+B, затем D, чтобы отсоединить его - это вернет вас к предыдущей оболочке и вы сможете закрыть терминал. Затем подключитесь к нему из SSH или откройте другой терминал (как хотите) и запустите tmux attach
. Это вернет вас к вашему терминалу. Существуют и другие варианты, но это базовая форма использования tmux в разных сеансах терминала.
Традиционным инструментом для записи терминальной сессии является script
. Он широко доступен, обычно по умолчанию, в большинстве Unix и Unix-подобных систем.
Некоторые эмуляторы терминалов, включая, конечно, xterm
, и некоторые эмуляторы терминалов pc
часто используемые на так называемом "консольном" устройстве настольного компьютера (т. Е. Непосредственно подключенная клавиатура и дисплей), имеют буфер обратной прокрутки, и вы можете вернуться к посмотрите предыдущее действие, и вы даже сможете скопировать и вставить его из прокрутки назад.
Действительно, урок здесь заключается в том, что (большинство) устройств TTY ничего не записывают - они просто пропускают это. Нужно организовать собственную запись, будь то запуск script
или аналогичного инструмента записи или использование соответствующего эмулятора терминала.
(Кстати, в некоторых системах также есть "консольный буфер", но он записывает только выходные данные самого ядра, и доступ к нему осуществляется с помощью команды, обычно называемой dmesg
.)