python - 在执行期间将后台命令输出 (stdout) 写入文件

标签 python linux bash stdout

我有一个需要很长时间的命令,我喜欢这样在后台运行:

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 选项,它会强制 stdoutstderr 无缓冲的流。

$ 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/

相关文章:

python - 从 Dataframe 中提取不同的值并将它们插入到具有相同列名称的新 Dataframe 中

linux - cURL——解决问题

c++ - 无法在 OpenCV 中运行 SFM 模块的程序

linux - Linux 接入点客户端之间的流量

linux - ubuntu utf-8 转换器脚本

python - 从网站提取的值创建 .xls 文件

Python GIL 防止 CPU 使用率在多核机器中超过 100%?

linux - 通过bash查找特定文件的数量

python - 在 Python 中取消引用 FFI 指针以获取底层数组

javascript - 从紧缩输出中找到匹配序列并在终端中打印