【问题标题】:Logging process output to file in real time将过程输出实时记录到文件中
【发布时间】:2015-11-06 23:32:41
【问题描述】:

我有一个在后台启动时运行的 python 脚本。它的打印命令不会像手动调用脚本时那样传递到 bash 控制台,例如python script.py。可以通过调用python script.py > log.txt 2>&1 将输出和错误重定向到文件。但是启动后,随着脚本的运行,我可以看到日志文件,但它的大小为零,所以大概是在等待脚本结束。使用 cat 调用它不会返回任何内容。我试过用 append >> 代替,但没有运气。

有什么办法可以让输出实时发生,以便查看?

【问题讨论】:

  • 一定要flush the output 确保缓冲不是罪魁祸首。
  • 使用 stderr 记录 - 它没有缓冲。见stackoverflow.com/questions/15860372/…
  • @chrisaycock 是正确的,将sys.stdout.flush() 插入代码可以修复它。对于哪种方法是最佳的,有什么强烈的看法吗?
  • 它们基本相同。在 stderr 情况下,它只是在内部为您调用 flush()
  • @chrisaycock 欢迎作为答案提交,或者如果您愿意,我可以提交?

标签: linux bash


【解决方案1】:

你的输出正在被缓冲,所以flush它在 Python 脚本中以确保结果会出现:

sys.stdout.flush()

【讨论】:

    猜你喜欢
    • 2014-07-23
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多