当每小时安排一项工作时x
,如何判断选择哪些小时?
例如,我们设置了一个 cronjob,*/8
它在凌晨 2 点、上午 10 点等运行,而不是午夜、上午 8 点等运行。
答案1
显示可以证明这一点的 cron 日志。
也许 cron 或系统在不同的时区运行?
答案2
尝试这个:
0 2-18/8 * * * /path/to/your/script
答案3
为了澄清情况,我们实际上看到了图表表明工作于凌晨 2 点、上午 10 点等开始。
调查该问题后,我们发现 cron 以 启动TZ=UTC
,而/etc/timezone
设置为。似乎 cron 在包含Europe/Zurich
时重新启动,并且自从更改后从未重新启动过。/etc/timezone
UTC
/etc/timezone
因此,cron 不仅以 UTC 启动其作业,还以 UTC 记录,结果/var/log/auth.log
包含如下内容:
May 25 08:19:57 ip-10-50-81-194 sshd[6216]: pam_unix(sshd:session): session opened for user root by (uid=0)
May 25 06:25:01 ip-10-50-81-194 CRON[6385]: pam_unix(cron:session): session opened for user root by (uid=0)
May 25 06:29:44 ip-10-50-81-194 CRON[6385]: pam_unix(cron:session): session closed for user root
May 25 08:53:36 ip-10-50-81-194 sudo: nagios : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/opt/nagios-plugins/check_system_update.pl
由于 collectd 在 中正常运行Europe/Zurich
,它显示从凌晨 2 点(UTC 午夜)、上午 10 点(UTC 上午 8 点)等开始的任务。
答案4
* 代表第一个-最后一个,所以如果你设置 cronjob 如下
0 */2 * * * echo "runat midn, 2am, 4am ..., everyday"
应该与
0 0-23/2 * * * echo "runat midn, 2am, 4am ..., everyday"
因此在你的示例工作中
0 0-23/8 * * * command
或者
0 */8 * * * command
应该在 0:00 8:00 16:00 运行...
也许您的时间或时间设置错误。向我们展示您的 crontab -l 输出并检查您当前的时间和时区设置。