我有一些应该停止运行的脚本,但它们却永远存在。有什么方法可以让我以可读的方式弄清楚他们正在向 STDOUT 和 STDERR 写入什么内容?
例如,我尝试这样做:
$ tail -f /proc/(pid)/fd/1
但这并没有真正起作用。无论如何,这是一个远景。
还有其他想法吗?
strace
就其本身而言,看到这一点是相当冗长且不可读的。
注:我是only对他们的产出感兴趣,而不是其他任何东西。其他的事情我有能力自己解决;这个问题仅集中于访问正在运行的进程的 stdout 和 stderrafter开始它。
由于我不允许编辑 Jauco 的答案,因此我将给出对我有用的完整答案(Russell 的页面依赖于无保证的行为,如果您关闭 STDOUT 的文件描述符 1,则下一个creat
调用将打开 FD 1。
因此,运行一个简单的无尽脚本,如下所示:
import time
while True:
print 'test'
time.sleep(1)
将其保存到 test.py,运行
$ python test.py
获取PID:
$ ps auxw | grep test.py
现在,附上gdb
:
$ gdb -p (pid)
并做fd
magic:
(gdb) call creat("/tmp/stdout", 0600)
$1 = 3
(gdb) call dup2(3, 1)
$2 = 1
现在你可以tail /tmp/stdout
并查看用于 STDOUT 的输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)