作为后续行动这个问题,我想知道我运行的程序的 STDOUT 和 STDERRdisown -h
被重定向到哪里。
答案1
disown
不会改变程序的 STDOUT/ERR。它们仍将转到您重定向它们的位置(使用>
等)。如果您没有重定向它们,它们将继续进入您启动程序的终端(直到您关闭该终端,在这种情况下它们将被丢弃)。
为了说明这一点,在终端中运行以下命令:
bash -c 'while true; do sleep 1; echo hi; done' &
这将每秒打印一次“hi”(这会让你非常恼火 ;-))。如果你disown
在启动后运行程序,“hi”将继续。你需要找到 shell 的 PID(例如使用 ps)并终止它以使其停止。
编辑:
根据评论,也许您真正想要做的是在disown
编辑程序并关闭程序运行的终端后恢复程序的输出。这个问题解释了这一点:事后使用 tcsh 进行远程 nohup(感谢江湖郎中)。