查看linux中已经运行的进程的输出

AL-*_*teb 10 linux process ps

我有一个在后台运行的进程(sh脚本),我想知道是否可以查看此进程的输出而不必中断它.

该过程由某些应用程序运行,否则我会将其附加到屏幕上供以后查看.可能需要一个小时才能完成,我想确保它正常运行且没有错误.

emi*_*mil 4

Linux 中已经有一个程序使用 ptrace(2) 来做到这一点,retty

http://pasky.or.cz/dev/retty/

如果您正在运行的程序已经附加到 tty,它就可以工作,我不知道如果您在后台运行程序,它是否会工作。

至少它可以给出一些好的提示。:)

您可以使用从程序中检索退出代码ptrace(2),否则只需使用附加到进程gdb -p <pid>,当程序终止时它将被打印。

您还可以使用 gdb 操作文件描述符:

(gdb) p close(1)
$1 = 0
(gdb) p creat("/tmp/stdout", 0600)
$2 = 1
Run Code Online (Sandbox Code Playgroud)

http://etbe.coker.com.au/2008/02/27/redirecting-output-from-a-running-process/