Cron job 运行成功突然报告找不到脚本

Cron job 运行成功突然报告找不到脚本

什么原因导致 cron 突然报告它应该运行的文件“未找到”,而该文件尚未被触碰过,并且事实上,自上次成功运行以来整个系统都没有被触碰过?

我有一个通过执行来定义的 cronjob 计划sudo crontab -e

其中,我有几十个成功运行的 cron 作业。我没有指定 PATH,而是使用绝对路径来调用所有计划的脚本,并根据需要在其中设置 PATH。我没有在 crontab 中指定 SHELL。所有脚本都将 shell 标识为其第一行。

如果我不干预系统,则在其他作业中间定义的特定作业将突然停止运行。

为了调试这个问题,我在日志文件中添加了输出重定向。其中,输出清楚地显示了脚本连续数周成功运行的输出,然后突然出现以下内容:

/bin/sh: /home/iupress/bin/sync-email_images: not found
/bin/sh: /home/iupress/bin/sync-email_images: not found
/bin/sh: /home/iupress/bin/sync-email_images: not found
/bin/sh: /home/iupress/bin/sync-email_images: not found
/bin/sh: /home/iupress/bin/sync-email_images: not found
/bin/sh: /home/iupress/bin/sync-email_images: not found
/bin/sh: /home/iupress/bin/sync-email_images: not found
/bin/sh: /home/iupress/bin/sync-email_images: not found
/bin/sh: /home/iupress/bin/sync-email_images: not found

如果我执行ls命令,从错误消息中复制并粘贴该确切路径,它会清楚地报告文件仍在那里(这并不奇怪)。然而,日志继续报告文件“未找到”,直到我采取行动。

我可以手动运行该脚本,而且它运行良好。

如果我执行 sudocrontab -e并保存文件,作业将在下一个计划时间运行,并将其输出放入日志中,不再报告脚本“未找到”。

在我看来,尝试运行的脚本的内容是无关紧要的,因为 cron 甚至没有处理该文件,因为它“未找到”。

我在遇到此问题的作业下方安排了一个作业,我知道该作业仍在继续运行,因为我已将其输出发送给我。因此,我知道 cron 正在运行,并且继续运行至少一个其他作业,即使它突然报告此作业的脚本“未找到”。

我的所有行都以换行符结尾。在将重定向添加到日志文件之前,crontab 中没有句号。现在我添加了 PATH 规范,但在作业中保留了绝对路径。不幸的是,我不知道这个问题是否会发生以及何时发生。很可能是几周后。

顺便说一句,我正在运行一个脚本来同步时钟,我看到的时间正是应该的时间。

答案1

不确定这是否有用。但重新启动 cron 可能会有帮助,也可能没有帮助。

sudo service cron restart 

相关内容