Можно ли прочитать выходные данные любого процесса, используя его PID?

Можно ли присоединить терминал к уже запущенному процессу, используя его PID аналогично использованию команды fg для заданий?

32
задан 5 March 2019 в 10:47

3 ответа

Здесь есть несколько вариантов. Один из них - перенаправить вывод команды в файл, а затем использовать tail для просмотра новых строк, добавляемых в этот файл в режиме реального времени.

Другой вариант - запустить вашу программу внутри screen, которая является своего рода текстовым терминальным приложением. Сеансы экрана можно присоединять и отсоединять, но номинально они предназначены для использования одним и тем же пользователем, поэтому, если вы хотите поделиться ими между пользователями.

Иначе, если вы хотите, вы можете проследить процесс и посмотреть, что он делает с помощью strace:

strace -e trace=open -p 22254 -s 80 -o output.txt
  • -p PID: присоедините процесс к PID идентификатора процесса и начните трассировка.
  • -s SIZE: укажите максимальный размер строки для печати (по умолчанию 32).
  • -o filename: записать вывод трассировки в имя файла, а не на экран (stderr).
0
ответ дан 5 March 2019 в 10:47

Вы можете получить стандартные файловые дескрипторы этого процесса, например, stdout:

tail -f /proc/<pid>/fd/1
0
ответ дан 5 March 2019 в 10:47

Вы можете использовать эти команды, приведенные ниже, чтобы присоединить запущенный процесс к другому терминалу:

  • retty (Man-страница: retty )
  • [ 112]
  • screen

Пример:

screen -S PID
retty $(pgrep PID)
reptyr PID
0
ответ дан 5 March 2019 в 10:47

Другие вопросы по тегам:

Похожие вопросы: