На Ubuntu, там способ получить содержание псевдотерминала (pts - например,/dev/pts/4) - т.е. вывести строки текста в терминале в файл - программы, которую это уже запускает в том терминале? Я не говорю о делании снимка экрана, но хранении, что программа пишет в терминал в файл. Это - основанная на проклятиях программа, которая регулярно переписывает экран.
Моя основная проблема, то, что моя программа уже работает - и я хотел бы сохранить это прежде, чем остановиться (и возможно перезапустить) программа.
Я знаю, что существует несколько способов выполнить, это, я думал об этой возможности, прежде чем я запустил программу: Просто перенаправляя вывод в файл; использование screen
, и взятие бумажной копии или вход сессии; использование виртуального терминала вместо этого (/dev/tty..) и использование видео консольного запоминающего устройства (/dev/vcs..); использование команды script
... (и вероятно многие другие...)
Но все это, только работал бы, если я сделал это, прежде чем я запустил программу!
Так, есть ли все еще способ, которым я мог "шпионить" на псевдотерминале и записать, это довольно? Я могу стать корнем, если я имею к...
Возможно, не непосредственно от tty, но этого processus должен использовать write
syscall. Можно использовать strace
для ловли всех вызовов записи.
sudo strace -e t=write -s 6000 -p your-process-id 2>logfile
Вы получите вещи как это, которому, возможно, понадобился бы еще некоторый парсинг:
write(1, "191\n", 4) = 4
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=9916, si_uid=1001, si_status=0, si_utime=0, si_stime=0} ---
write(1, "21021\n", 6) = 6
write(1, "14728\n", 6) = 6
write(1, "13291\n", 6) = 6
write(1, "20372\n", 6) = 6
, Если Ваша программа пишет в некоторые другие файлы, Вы получите это также в выводе. Это может быть раздражающим. Или это в конечном счете могло быть огромным объемом данных. Используемый дескриптор файла равняется, вероятно, 1. Вы можете <час> grep "^write.1"
sudo strace -e t=write -s 6000 -p your-process-id 2>&1 | grep ^write.1 >logfile
В следующий раз, попытаться выполнить Вас команда с script
. Это ловит все данные, записанные в tty.
script -c "program and args" logfile