【问题标题】:One of the cron jobs not running其中一项 cron 作业未运行
【发布时间】:2015-05-23 11:37:00
【问题描述】:

我尝试了很多东西,但我似乎无法让它发挥作用。 我的 cron 中有以下 2 个条目:

00 21 * * 0,2,4 /scratch/.auto_preflight/sys_reboot.pl >> /scratch/.auto_preflight/.auto_reboot.log 2>&1

30 21 * * 0,2,4 /scratch/.auto_preflight/check_new_build.pl /scratch/.auto_preflight/import.txt >> /scratch/.auto_preflight/.auto_buildcheck.log 2>&1

当我在执行后检查时,我可以看到第一个脚本执行成功。它重新启动系统。我可以看到日志和所有内容。但是由于某种原因,应该在半小时后执行作业的脚本没有运行。甚至不留下任何日志。

现在我尝试更改时间并重新启动 cron,然后它运行,但它没有在预定时间运行。系统重启是否会阻碍 cron 作业以某种方式执行?

这是我的 cron 版本: vixie-cron-4.1-81.el5

【问题讨论】:

  • 文件/scratch/.auto_preflight/check_new_build.pl是否存在?我可以看到第二个作业没有运行的唯一方法是,如果系统在 30 分钟后准备好重新启动,而不是重新启动开始时。
  • 感谢您的回复。系统在 10 分钟后重新启动,是的,perl 脚本存在于指定路径中。

标签: linux perl cron


【解决方案1】:

cron 总是留下日志:/var/log/cron 说什么?您看到那里的条目正在尝试运行吗?

重启后机器什么时候出现?这是一个真的很长重启的情况吗?某些脚本会阻止关机/启动?

还要检查 /var/log/cron 中同一时间范围内的其他条目。

暗中刺探:SELinux 开启了吗?根据您的描述,这无关紧要,但例如,如果您的机器以强制模式启动,但稍后将其更改为 Permissive - 这可能需要调查。所以 /etc/sysconfig/selinux 的状态在这里很重要,当你可以通过调整时间成功执行你的工作时,“sestatus”命令的输出也是很重要的。

查看 /var/log/audit/audit.log 可能会对 SELinux 问题有所了解。

最后一件事:简化问题,而不是“特殊”脚本 - 创建“虚拟”脚本:

00 21 * * 0,2,4 reboot
30 21 * * 0,2,4 touch /tmp/foo

现在如果 /tmp/foo 不存在 - 系统出了问题,否则它一定是脚本中的某些逻辑失败(锁定文件等)。 cron 没有理由不运行帐户重启。这将阻止所有其他 cron 作业被触发。

【讨论】:

  • cron 日志看起来不错。我没有看到任何错误或任何脚本名称。 sestatus 返回禁用状态。还有一件事,所以我将第二份工作的时间改为比当前时间晚几分钟并重新启动 cron。它接手了这份工作。这让我怀疑系统或 cron 服务有问题。
  • 您应该使用 pastebin 或其他服务来发布日志。
  • 查看日志我找不到您的脚本的单个调用实例(重启和 check_new_build 都没有)。
  • cron 总是会比你创建它们晚一两分钟来获取“新”作业。它每分钟都会重新扫描新作业,但我相信它不会立即应用它,它只能在下一分钟运行它,所以那里有 2m。
  • 您将这些条目添加到哪个日志?一些用户/root crontab? /etc/crontab 。也许将它添加到 /etc/cron.d 会产生更好的结果(在我的情况下,SELinux 上下文对于 /etc/cron.d 条目与 /etc/cron.{hourly,daily,...} 与 crontab -e 的工作方式不同。 ..但是你禁用了selinux,所以不应该是这样
猜你喜欢
  • 2014-11-02
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多