Cron 作业正在将错误写入错误日志,但无法将输出写入输出日志文件

Cron 作业正在将错误写入错误日志,但无法将输出写入输出日志文件

我有 2 个 python 代码,我使用 cron 安排它们。我的代码实际上每天从上午 10:30 运行到下午 4:20。从上午 10:30 到上午 11:00,我的代码每分钟输出 2-3 行,之后开始每分钟输出 30-40 行。我已经这样安排了我的代码。

30 10  * * 1-5 cd /home/alpha/IBpy && python LongData.py >> /home/alpha/logs/Longdata.op 2>> /home/alpha/logs/Longdata.er
31 10  * * 1-5 cd /home/alpha/IBpy && python ShortData.py >> /home/alpha/logs/Shortdata.op 2>> /home/alpha/logs/Shortdata.er

现在的问题是,我的程序运行得很好,他们正在做他们应该做的一切。如果发生任何错误,它们会立即将错误写入错误日志文件,但它们甚至不会将单行写入输出文件。我在这里和 stackoverflow 中检查了几乎所有可能对我有帮助的帖子,但不幸的是它们都没有帮助我。但是,如果我在上午 11:00(当程序开始输出 30-40 行时)而不是 10:30 启动相同的程序,则一切正常。我真的不知道我做错了什么。我不应该在 11 点开始我的计划。任何帮助将不胜感激。

答案1

似乎我遇到了这个问题,因为标准输出的数据已被缓冲。根据帖子我刚刚将我的 cron 工作更改为

31 10  * * 1-5 cd /home/alpha/IBpy && stdbuf -i0 -o0 -e0 python ShortData.py >> /home/alpha/logs/Shortdata.op 2>> /home/alpha/logs/Shortdata.er

现在一切都运转良好。

答案2

您的语法应该适用于(ba)sh.检查系统上默认 shell 的文档以了解正确的语法。请注意,不同的 shell 对重定向的支持不同。例如,csh您无法重定向stderrstdout.

如果不是这种情况,我会说这是 python 脚本本身的错误。如果您在 python 脚本中检查时间/日期,请确保获得正确的时间格式。

相关内容