Можно ли подключить терминал к уже запущенному процессу, используя его PID аналогично использованию fg
команды для заданий?
command-line
process
Томми
источник
источник
Ответы:
Вы можете получить стандартные файловые дескрипторы этого процесса, например
stdout
:источник
# ls -la /proc/24510/fd/1 lrwx------ 1 root root 64 Oct 31 08:34 /proc/24510/fd/1 -> socket:[444026]
Здесь есть несколько вариантов. Один из них - перенаправить вывод команды в файл, а затем использовать его
tail
для просмотра новых строк, добавляемых в этот файл в режиме реального времени.Другой вариант - запустить вашу программу внутри
screen
, которая является своего рода текстовым терминальным приложением. Сеансы экрана можно прикреплять и отсоединять, но номинально они предназначены для использования одним и тем же пользователем, поэтому если вы хотите поделиться ими между пользователями.Иначе, если вы хотите, вы можете проследить процесс и посмотреть, что он делает
strace
:-p PID
: Присоедините к процессу с идентификатором процесса PID и начните трассировку.-s SIZE
: Укажите максимальный размер строки для печати (по умолчанию 32).-o filename
: Записать вывод трассировки в имя файла, а не на экран (stderr).источник
sudo
strace для присоединения к процессу, и использовать-o ~/output.txt
так, чтобы файл оставался в вашей домашней папке.Вы можете использовать эти команды, приведенные ниже, чтобы присоединить запущенный процесс к другому терминалу:
retty
(Man страница: retty )reptyr
screen
Пример:
источник
sudo apt-get install retty
но у retty есть несколько ограничений. Проверьте справочную страницу, упомянутую в ответе.