在 Ubuntu 10.04 上,我有一个很长的 Python 程序,它会打印一堆输出;我在“nohup”下运行它。但是,它会等到最后才将所有文本放入 nohup.out。当我在 FreeBSD 下运行类似程序时,每一行都会发送到 nohup.out。是否有可以设置 Ubuntu 设置以更快地获取输出的设置?
答案1
是的,这与 Linux 上默认的 stdout 缓冲方式有关。您需要在代码中明确运行 setbuf() 来覆盖此行为。
我的建议是避免使用 nohup,如果你使用 bash shell,它允许你将命令与 shell 分离
$ ( my_cmd > ~/output.log 2>&1 & )
您还可以使用disown
类似的效果来对当前正在运行的作业产生影响。
答案2
由于你的程序是 python,你可以使用python-u 命令。或者你可能会发现解除缓冲程序很有用。