Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 当使用;诺胡普;,打印功能赢得';在整个程序完成之前不要打印_Bash_Julia_Nohup - Fatal编程技术网

Bash 当使用;诺胡普;,打印功能赢得';在整个程序完成之前不要打印

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

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,直到过程完成,然后结果立即打印到屏幕上


我认为,您仍然可以实时重定向它,像tee这样的东西可能会起作用或>&1。不确定必须检查。

在流程完成之前,nohup的手册页没有提到缓冲;但是,shell可能会通过使用不同的实现屏蔽nohup来改变这种行为。至少在bash中,nohup只是在默认情况下重定向到标准输出(没有缓冲)。@ChrisHutchinson我假设他不知道该文件,当它在那里写入时,它没有写入标准输出,只是在最后等待该输出,这实际上是一个缓冲区。我想我可能是错误的,因为我只是为了好玩而尝试了一下,但最后没有做一个to stdout,只是停留在文件中=/现在我想知道我从哪里记得发生的事情,过去经常使用它,可能是不同的实现。