实时记录 cron 任务

实时记录 cron 任务

我有一个 Python 进程,我通过 crontab 每晚运行它。它会抓取一个我访问权限有限的 API,因此经常需要停下来等待一个小时。

根据我的估计,这项工作需要5-6个小时才能完成。

目前我有一个这样的 crontab:

05 01 * * * python3 /home/{my username}/path/to/process/main.py >> /var/log/process_name.log 2>&1

这很棒,并且已证明文件正在运行,但我只能在运行完成后检查输出,这对我来说并不理想。考虑到运行所需的时间,我更喜欢 cron 实时记录输出和错误。

现在这有点成为问题,因为似乎我的估计是错误的,我可能等待的时间比我认为的要长得多 - 在这种情况下,我想看看记录的内容,这样我就能明白原因。

有没有办法实时记录 cron 输出?

答案1

您需要一种称为刷新的机制:强制一个进程写入其输出,否则该输出将保持缓冲直到完成。

Shell 脚本逐行刷新。如果您需要脚本结束前的输出,请确保它包含换行符。

Python 程序可以通过调用 flush 方法明确刷新其标准输出:

import sys
sys.stdout.flush()

相关内容