当使用"nohup"时,打印函数直到整个程序执行完才会打印

When using "nohup", the print function won't print until the entire program is finished

Julia 中的示例:假设我有一个包含以下代码的文件“test.jl”:

for i in 1:3
    sleep(2)
    print("i = ", i, "\n") 
end

那么如果我运行

nohup julia test.jl &

我不会每 2 秒得到一次打印结果。相反,我将在最后获得所有三个打印结果,这对于监视需要永远完成的循环的进度是无用的。

有什么建议吗?

很可能发生了输出缓冲。尝试手动刷新标准输出:

for i in 1:3
    sleep(2)
    print("i = ", i, "\n") 
    flush(stdout)
end

nohup 将标准输出重定向到 $HOME/nohup.out 直到过程完成,然后结果会立即打印到屏幕上。

https://linux.die.net/man/1/nohup 我认为您仍然可以实时重定向它,例如 tee 或 >&1.不确定就得检查一下。