有没有办法恢复/恢复 nohup 以在控制台中查看输出?
-
27-09-2019 - |
题
我知道机会极低,但是有没有办法看到最近输出的不及格流程?
我仍然打开这个进程,但我已经将所有输出重定向到 /dev/null 来运行它。
那么有没有办法将这样的过程恢复到控制台,还是没有希望:(
干杯
解决方案
有一种方法,但它不是直截了当的,技巧是使用 dup2 并取决于您的程序与 libc 链接的事实(所有 c/c++ 应用程序都是如此,但 java 应用程序不会是例如) )
- 使用 gdb 附加到您的进程
在 gdb 提示符下运行以下命令将 stdout 重定向到 /tmp/newfile
$ print dup2(open("/tmp/newfile",0), 1)
运行以下命令将 stderr 重定向到 /tmp/newfile
$ print dup2(open("/tmp/newfile",0), 2)
- 将 gdb 从你的进程中分离出来,你就完成了
什么 杜普2 确实是
复制文件描述符 这意味着 stdout/stderr(1 和 2)和从 open 返回的新文件描述符都可以互换使用,这将导致所有进入 stdout 和 stderr 的输出都转到您打开的文件。
不隶属于 StackOverflow