未知程序的STDOUT指向哪里?


11

作为此问题的后续,我想知道我运行的程序的STDOUT和STDERR disown -h被重定向到何处。

Answers:


10

disown不会更改程序STDOUT / ERR。无论您将其重定向到何处,它们仍将转到(使用>等)。如果您没有重定向它们,它们将继续进入您从中启动程序的终端(直到您关闭该终端,在这种情况下,它们将被丢弃)。

为了说明这一点,请在终端中运行它:

bash -c 'while true; do sleep 1; echo hi; done' &

这将每秒打印一次“ hi”(并且使您非常烦恼;-)。如果您disown在启动程序后,“ hi”将继续。您需要找到外壳的PID(使用例如ps)并杀死它以使其停止。

编辑:

根据评论,也许您真正想要做的是在您disown编辑程序并关闭正在运行的终端后恢复程序的输出。在以下问题中对此进行了解释:使用tcsh进行事后远程nohup(感谢庸医吉ck德)。


根据他先前的问题,事实是他关闭了先前的终端。那么他如何获得输出?
Gnoupi 2010年

@Gnoupi:我认为没有任何办法可以将输出恢复。至少我从未听说过任何方式。
sleske 2010年

感谢您的评论Gnoupi :-)实际上,找不到输出。我将继续寻找:-)
Thrawn

1
这确实是答案:disown不会改变任何东西;启动该过程时,您需要设置任何捕获或重定向。如果你需要它之后,GDB是你(只)的朋友:superuser.com/questions/50058/...
嘎嘎吉诃德

@quack-我要说的是,这个问题需要重构,以强调实际用例,而不只是工具。以当前形式(以不存在为中心),这确实是正确的答案。但是从上下文来看,对于上一个问题,用户只是想恢复输出,在这种情况下,您的链接就是答案。
Gnoupi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.