归根结底,这里最小的问题是一个简单的 python 脚本,我想在 Linux 上使用 nohup 运行它。我使用以下命令运行它(在 Linux 上):
nohup python test.py &
该命令似乎只是不执行任何操作,没有任何内容附加到 nohup.out。如果我在没有“&”的情况下运行它,输出将在终端窗口上正确显示。我缺少什么?
import time
def test():
while(True):
print "Woke up!"
time.sleep(5)
if __name__ == "__main__":
test()
答案1
尝试使用命令运行它nohup python -u test.py &
。这应该使输出无缓冲。
您可以通过添加 bang 路径作为带有该选项的第一行来使脚本可执行-u
。您还需要使用命令设置可执行位chmod +x test.py
。
#!/usr/bin/python -u
import time
....
然后您可以将其运行为nohup test.py &
.
答案2
我猜是基于块的 I/O 缓冲。如果您setvbuf(3)
在标准输出上设置基于行或无缓冲输出的 Python 等效项,会发生什么?