告诉nohup实时写输出

问题描述 投票:2回答:3

[使用nohup时,脚本的输出被缓冲,仅在脚本执行完毕后才转储到日志文件(nohup.out)。以接近实时的方式查看脚本输出,以了解其进展情况,这将非常有用。有没有办法让nohup在脚本产生输出时写入输出?或者,由于这种频繁的文件访问操作很慢,因此要在执行期间定期转储输出?

bash output real-time nohup
3个回答
3
投票

有一个特殊的程序可以:缓冲!参见http://linux.die.net/man/1/unbuffer

想法是程序的输出例程会识别stdout不是终端(isatty(stdout) == false),因此它们会将输出缓冲到最大大小。使用unbuffer程序作为程序的包装程序,将“欺骗”它一次写入一行输出,就像直接在交互式终端中运行该程序一样。


0
投票

您正在执行什么命令?您可以创建一个.bash文件,该文件内部将在每个命令后将输出重定向到文件(如echo“ blabh” >> your-output.txt),以便您可以在执行nohup期间检查该文件(应运行:nohup script.bash &)

欢呼声


0
投票

请使用stdbuf。从7.5起在GNU coreutils中添加了它。

stdbuf  -i0 -o0 -e0 cmd

[带有nohup的命令,如:

nohup stdbuf -i0 -o0 -e0 ./server >> log_server.log 2>&1  

Reference

© www.soinside.com 2019 - 2024. All rights reserved.