Можно ли присоединить терминал к уже запущенному процессу, используя его PID аналогично использованию команды fg
для заданий?
Здесь есть несколько вариантов. Один из них - перенаправить вывод команды в файл, а затем использовать tail
для просмотра новых строк, добавляемых в этот файл в режиме реального времени.
Другой вариант - запустить вашу программу внутри screen
, которая является своего рода текстовым терминальным приложением. Сеансы экрана можно присоединять и отсоединять, но номинально они предназначены для использования одним и тем же пользователем, поэтому, если вы хотите поделиться ими между пользователями.
Иначе, если вы хотите, вы можете проследить процесс и посмотреть, что он делает с помощью strace
:
strace -e trace=open -p 22254 -s 80 -o output.txt
-p PID
: присоедините процесс к PID идентификатора процесса и начните трассировка. -s SIZE
: укажите максимальный размер строки для печати (по умолчанию 32). -o filename
: записать вывод трассировки в имя файла, а не на экран (stderr). Вы можете получить стандартные файловые дескрипторы этого процесса, например, stdout
:
tail -f /proc/<pid>/fd/1
Вы можете использовать эти команды, приведенные ниже, чтобы присоединить запущенный процесс к другому терминалу:
retty
(Man-страница: retty ) screen
Пример:
screen -S PID
retty $(pgrep PID)
reptyr PID