在系统中配置了一个定期清理docer仓库过期镜像的任务:
$ crontab -l
# 每周日凌晨2点(UTC)
00 02 * * 2 /root/nexus_cleanup.sh >/dev/null 2>&1
然后,数周后查看任务日志时,却发现该任务并未被执行。于是,修改为:18 02 * * * /root/nexus_cleanup.sh >/dev/null 2>&1 ,结果发现,在指定时间,该任务仍未触发。但如果改为每分钟一次:*/1 * * * * ,则是可以触发的。
接下来,检查cron的配置。
cat /etc/cron.d/0hourly
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly
以上文件说明:只有 01 分被系统级 cron 放行,00 分(整点)没有被任何一行允许
因此,要指定在00-59的任务时间执行,需要添加以下文件:
$ tee /etc/cron.d/00-59-pass <<'EOF'
# 放行 00-59 任意分钟
* * * * * root /bin/true >/dev/null 2>&1
EOF
systemctl restart crond
当然,也可以直接修改/etc/cron.d/0hourly文件达到相同目的。
另外,查看cron任务日志:
$ tail /var/log/cron