Cron 作业无法读取以前的 cron 日志



为了检测我的 cron 作业中可能发生的错误,我设置了一个另一个 cron 作业来检查 crontab 发出的上一个日志:

def check_last_cron():
with open('/home/pi/Desktop/cron_output.log') as f:
txt = f.read()
f.close()
if 'Traceback' in txt:
print('Traceback detected')
send_to_phone(txt)
else:
print('no Traceback detected')

手动运行时,一切顺利:

  • 脚本内容如下
  • 检测"追溯"一词
  • 向我发送日志

克朗塔布:

*/5 * * * * python3 /home/pi/Desktop/initialize.py > /home/pi/Desktop/cron_output.log 2>&1
*/5 * * * * python3 /home/pi/Desktop/checker.py > /home/pi/Desktop/log.log 2>&1

但是当使用 crontab 运行时,日志读取为空。我错过了什么?

我完全不确定,但也许这里有两件事你可以尝试:

  • 与其使用 2 个 cron 作业,不如只做:
*/5 * * * * python3 /home/pi/Desktop/initialize.py > /home/pi/Desktop/cron_output.log 2>&1 && python3 /home/pi/Desktop/checker.py > /home/pi/Desktop/log.log 2>&1

这样它将在第一个命令之后执行

  • 也许将sudo添加到您的第二个命令中,它可能没有读取日志的权限(似乎不太可能,但谁知道呢)
sudo python3 /home/pi/Desktop/checker.py > /home/pi/Desktop/log.log 2>&1

我不确定为什么要同时运行这两个脚本。checker.py文件应该在initialize.py之后运行。

试试这个 ->

*/5 * * * * python3 /home/pi/Desktop/initialize.py > /home/pi/Desktop/cron_output.log 2>&1
*/6 * * * * python3 /home/pi/Desktop/checker.py > /home/pi/Desktop/log.log 2>&1

另外 :- 您目前在log.log文件中得到了什么? 是no Traceback detected.吗?

似乎每次重新启动 cron 作业时都会擦除以前的 cron 日志。

添加另一个 cron 作业来检查第一个日志是否正常工作,但只能通过执行它并具有如下时间偏移量:

*/5 * * * * python3 /home/pi/Desktop/initialize.py > /home/pi/Desktop/cron_output.log 2>&1
1-59/5 * * * * python3 /home/pi/Desktop/checker.py > /home/pi/Desktop/log.log 2>&1

这个 1-59/5 每 5 分钟执行一次 checker.py,initialize.py 前一分钟,如本文所述

最新更新