cron 作业没有将输出写入正确的输出日志文件
cron job is not writting the output to output log file correctly
我有一个 cron 作业(一个 python 程序),每周从 9:30 AM(EDT) 开始,一直运行到 4:15 PM(EDT)。程序在 4:15 下午后自动终止。我设置 cron 作业的方式是这样的。
30 09 * * 1-5 cd /home/IBpy && python RealTimedata.py >> /home/logs/realtimedata.op 2>> /home/logs/realtimedata.er
现在,问题出在输出日志上。我的程序每分钟都应该写 30-40 行到输出文件 (realtimedata.op)。我正在使用 WIN-SCP 检查我的输出日志,我发现 cron 作业在 2-3 分钟后将输出日志写入日志文件,而不是在它到达时立即写入。我每 30 秒刷新一次并检查输出日志。
例如:假设我安排程序在 9:30 AM 开始,我将只能在 9:34 AM 之后检查前 3 分钟的日志。
另一件事是文件中缺少最后 8-10 分钟的日志数据,尽管我的程序一直保持 运行 成功直到结束。
我找不到原因。这是CRON的问题吗?还是我的 CRON 作业调度有任何问题?或者这是我用来检查日志的 WIN-SCP 的问题?如果这是 WIN-SCP 的问题,请建议我使用比 WINSCP 更好的 FTP 客户端来检查我的文件。
谢谢
stdout 的数据被缓冲,我认为是 4K 块。
您可以尝试 stdbuf 或 unbuffer 命令,如 turn-off-buffering.
中所述
测试哪一个最适合。
crontab 命令看起来像
30 09 * * 1-5 cd /home/IBpy && unbuffer python RealTimedata.py >> /home/logs/realtimedata.op 2>> /home/logs/realtimedata.er
或
30 09 * * 1-5 cd /home/IBpy && stdbuf -i0 -o0 -e0 python RealTimedata.py >> /home/logs/realtimedata.op 2>> /home/logs/realtimedata.er
我有一个 cron 作业(一个 python 程序),每周从 9:30 AM(EDT) 开始,一直运行到 4:15 PM(EDT)。程序在 4:15 下午后自动终止。我设置 cron 作业的方式是这样的。
30 09 * * 1-5 cd /home/IBpy && python RealTimedata.py >> /home/logs/realtimedata.op 2>> /home/logs/realtimedata.er
现在,问题出在输出日志上。我的程序每分钟都应该写 30-40 行到输出文件 (realtimedata.op)。我正在使用 WIN-SCP 检查我的输出日志,我发现 cron 作业在 2-3 分钟后将输出日志写入日志文件,而不是在它到达时立即写入。我每 30 秒刷新一次并检查输出日志。 例如:假设我安排程序在 9:30 AM 开始,我将只能在 9:34 AM 之后检查前 3 分钟的日志。
另一件事是文件中缺少最后 8-10 分钟的日志数据,尽管我的程序一直保持 运行 成功直到结束。 我找不到原因。这是CRON的问题吗?还是我的 CRON 作业调度有任何问题?或者这是我用来检查日志的 WIN-SCP 的问题?如果这是 WIN-SCP 的问题,请建议我使用比 WINSCP 更好的 FTP 客户端来检查我的文件。
谢谢
stdout 的数据被缓冲,我认为是 4K 块。
您可以尝试 stdbuf 或 unbuffer 命令,如 turn-off-buffering.
中所述
测试哪一个最适合。
crontab 命令看起来像
30 09 * * 1-5 cd /home/IBpy && unbuffer python RealTimedata.py >> /home/logs/realtimedata.op 2>> /home/logs/realtimedata.er
或
30 09 * * 1-5 cd /home/IBpy && stdbuf -i0 -o0 -e0 python RealTimedata.py >> /home/logs/realtimedata.op 2>> /home/logs/realtimedata.er