我有一个需要很长时间的命令,我喜欢这样在后台运行:
python3 script.py -f input.key -o output >> logs/script.log 2>&1 &
从命令确实在后台运行的意义上来说,这是完美的,我可以稍后检查输出和潜在错误。
主要问题是输出仅在命令完全完成后附加,而我希望有最新的日志消息,所以我检查进度。
所以当前日志是空的,然后在 08:30 突然出现两行:
[08:00] Script starting...
[08:30] Script finished!
相反,我希望在命令完全完成之前将输出保存到文件中。
最佳答案
由于您正在调用 Python
脚本,因此您需要使用 -u
选项,它会强制 stdout
和 stderr
无缓冲的流。
$ python3 -u script.py -f input.key -o output >> logs/script.log 2>&1 &
您可以使用 cat
定期检查日志,或者结合 watch
实时检查日志:
$ watch cat logs/script.log
↳ https://docs.python.org/3.7/using/cmdline.html#cmdoption-u
关于python - 在执行期间将后台命令输出 (stdout) 写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57123555/