问题
用nohup后台执行python程序,并将标准输出和错误输出重定向到一个log文件,代码如下:
nohup python ./train.py >> ./train.log 2>&1 &
(命令具体含义参考使用nohup进行python后台运行_zaf赵的博客-CSDN博客)
但发现log文件隔好久才会更新,很煎熬。。。然而正常屏幕输出时候非常及时。
不确定程序是不是在正常运行。
原因
python的输出进行了缓冲,导致test.log并不能够马上看到输出,而是存一定数据后再写入到log中。这种缓冲对大量数据读写有保护作用,但是也会造成写入延迟。
解决方案
为python添加-u 参数,使得python不启用缓冲。
nohup python -u ./train.py >> ./train.log 2>&1 &
实时观察
通过tailf train.log命令。
tailf train.log