使用nohup
时,脚本的输出会被缓冲,并且只有在脚本执行完毕后才会转储到日志文件(nohup.out)。以接近实时的方式查看脚本输出非常有用,以了解它是如何进展的。
有没有办法让nohup
在脚本生成时写出输出?或者,由于这种频繁的文件访问操作很慢,在执行期间定期转储输出?
答案 0 :(得分:2)
有一个特殊的程序:unbuffer!见http://linux.die.net/man/1/unbuffer
这个想法是你的程序的输出例程识别stdout不是终端(isatty(stdout) == false
),因此它们将输出缓冲到某个最大大小。使用unbuffer
程序作为程序的包装器将“欺骗”它一次写一行输出,就像你直接在交互式终端中运行程序一样。
答案 1 :(得分:0)
您执行的命令是什么?您可以创建一个.bash文件,里面的内容是在每个命令之后将输出重定向到文件(echo“blabh”>>&output.txt),这样您就可以在nohup执行期间检查该文件(您应该运行:nohup script .bash&)
干杯
答案 2 :(得分:0)
请使用stdbuf
。从7.5起在GNU coreutils
中添加了它。
stdbuf -i0 -o0 -e0 cmd
带有nohup
的命令,例如:
nohup stdbuf -i0 -o0 -e0 ./server >> log_server.log 2>&1