如何让 nohup.out 更频繁地刷新?

Pau*_*man 9 nohup ubuntu-10.04

在 Ubuntu 10.04 上,我有一个很长的 Python 程序,可以打印一堆输出;我在“nohup”下运行它。但是,它会等到最后将所有文本放入 nohup.out 中。当我在 FreeBSD 下运行类似的程序时,每一行都会被发送到 nohup.out。是否有我可以设置的 Ubuntu 设置来更快地获得输出?

Phi*_*lds 9

是的,这与 Linux 上默认缓冲 stdout 的方式有关。您需要在代码中显式运行 setbuf() 以覆盖此行为。

我的建议是避免 nohup,如果您使用的是 bash shell,它允许您将命令与 shell 分离

$ ( my_cmd > ~/output.log 2>&1 & ) 
Run Code Online (Sandbox Code Playgroud)

您还可以disown对当前正在运行的作业产生类似的效果。


Zac*_*son 5

由于您的程序是 python,您可以使用python -u运行它。或者,您可能会发现unbuffer程序很有用。