【问题标题】:How to check if the cronjob succeeded如何检查 cronjob 是否成功
【发布时间】:2020-09-04 23:28:15
【问题描述】:

我正在尝试添加一个用于修补的 cronjob,我只是想知道它是否成功。 我执行了以下操作:

echo "0 0 * * * root yum -d 0 -y update > /dev/null 2>&1 && shutdown -r +1" >> /etc/cron.d/patch

现在,当我要去/var/log/cron 时,我认为所有的 cron 作业都应该在那里列出。此外,我看不到任何/var/log/syslog。我想知道我的脚本文件(在/etc/cron.d下添加为patch)是否成功,我该怎么做?

谢谢

【问题讨论】:

  • 在不阅读任何可能输出的相关注释的情况下应用补丁时要非常小心,并且对于从脚本重新启动(尤其是 cron)也要非常小心。如果补丁需要手动干预,而您盲目地应用它并重新启动——您很可能无法让该主机重新启动。系统更新最好手动应用,对于 Linux,除非更新内核,否则无需重新启动。 (所有其他进程,包括systemd 都可以即时重启)
  • @shellter 我认为当我按照unix.stackexchange.com/questions/296347/… 的描述执行crontab -l 时,系统cronjob 不会显示为条目[参见接受的答案]
  • @DavidC.Rankin 以自动化方式执行此操作的更好方式/方法应该是什么?
  • 好吧——你真的不想自动更新。根据您的发行版,您可能必须进行手动更改以适应更新(不经常,但即使一年一次 - 如果您错过它并且将远程管理的机器关闭,那就太多了)。一般更新时间不超过 5 分钟。这只是你每隔几天做的事情之一。如果您正在管理服务器,您甚至可能有意等待几天以确保更新良好,然后再更新您的机器。手动更改的快速示例Archlinux,其他发行版类似。
  • @DavidC.Rankin 有什么方法可以检查 cronjob 是否运行?我正在尝试做cat /dev/null 但一无所获。

标签: shell jenkins cron


【解决方案1】:

如何检查 cronjob 是否成功

"对用户 crontab 的编辑和运行的 cron 作业默认都记录到 /var/log/syslog 和 that's the first place to check if things are not running as you expect."

$ awk "/clearme/ { print $1 }" /var/log/syslog

另外,设置shebang(第一行):

#!/bin/bash

并确保将绝对路径设置为可执行文件。例如。 datetime 应设置为/usr/bin/datetime

所以在你的情况下,命令可能是:

/usr/bin/yum -d 0 -y update > /dev/null 2>&1 && /usr/bin/shutdown -r +1" >> /etc/cron.d/patch

【讨论】:

    【解决方案2】:

    Cron 将任何输出发送到 stdout 或 stderr。要知道 cron 作业是否成功,请将输出取决于成功:一切正常 → 无输出。可疑的东西→回声可疑。

    不要在 crontab 中编写具有此类逻辑的长命令——将其放入脚本中并从 cron 启动该脚本。

    【讨论】:

      猜你喜欢
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 2010-12-31
      • 2012-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多