Bash 当使用;诺胡普;,打印功能赢得';在整个程序完成之前不要打印
Julia中的示例:假设我有一个文件“test.jl”,其中包含以下代码:Bash 当使用;诺胡普;,打印功能赢得';在整个程序完成之前不要打印,bash,julia,nohup,Bash,Julia,Nohup,Julia中的示例:假设我有一个文件“test.jl”,其中包含以下代码: for i in 1:3 sleep(2) print("i = ", i, "\n") end 那如果我跑 nohup julia test.jl & 我不会每2秒得到一次打印结果。相反,我将在最后得到所有三个打印结果,这对于监控一个需要永远才能完成的循环的进度是无用的 有什么建议吗?可能正在进行输出缓冲。尝试手动刷新标准输出: for i in 1
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,直到过程完成,然后结果立即打印到屏幕上
我认为,您仍然可以实时重定向它,像tee这样的东西可能会起作用或>&1。不确定必须检查。在流程完成之前,nohup的手册页没有提到缓冲;但是,shell可能会通过使用不同的实现屏蔽nohup来改变这种行为。至少在bash中,nohup只是在默认情况下重定向到标准输出(没有缓冲)。@ChrisHutchinson我假设他不知道该文件,当它在那里写入时,它没有写入标准输出,只是在最后等待该输出,这实际上是一个缓冲区。我想我可能是错误的,因为我只是为了好玩而尝试了一下,但最后没有做一个to stdout,只是停留在文件中=/现在我想知道我从哪里记得发生的事情,过去经常使用它,可能是不同的实现。