是否可以通过使用其 PID 将终端附加到已经运行的进程,方式类似于使用fg
作业命令?
答案1
您可以获取该进程的标准文件描述符,例如stdout
:
tail -f /proc/<pid>/fd/1
答案2
这里有几个选项。一个是将命令的输出重定向到文件,然后使用它tail
来实时查看添加到该文件的新行。
另一个选项是在 中启动您的程序screen
,它是一种基于文本的终端应用程序。Screen 会话可以附加和分离,但名义上只能由同一用户使用,因此如果您想在用户之间共享它们。
否则,如果您愿意,您可以跟踪该过程并查看它在做什么strace
:
strace -e trace=open -p 22254 -s 80 -o output.txt
-p PID
:附加到具有进程 ID PID 的进程并开始跟踪。-s SIZE
:指定要打印的最大字符串大小(默认为32)。-o filename
:将跟踪输出写入文件 filename 而不是屏幕 (stderr)。
答案3
您可以使用下面给出的命令在另一个终端上附加正在运行的进程:
retty
(手册页:雷蒂)reptyr
screen
例子:
screen -S PID
retty $(pgrep PID)
reptyr PID