当每x小时安排一次工作时,如何判断哪个小时将被挑选?
例如,我们为*/8设置了一个cronjob,它在凌晨2点,上午10点等运行,而不是午夜,上午8点等。
显示certificate这一点的cron日志。
也许cron或系统运行在不同的时区?
尝试这个:
0 2-18/8 * * * /path/to/your/script
为了弄清楚这个情况,我们看到了一些图表 ,表明这项工作是凌晨2点,上午10点开始的。
在调查问题后,我们发现cron是以TZ=UTC启动的,而/etc/timezone则是在Europe/Zurich设置的。 看来cron在/etc/timezone包含UTC /etc/timezone重新启动,并且从/etc/timezone更改以来从未重新启动。
因此,cron不仅在UTC中启动作业,而且还以UTC /var/log/auth.loglogin,导致/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点(上午8点UTC)开始的工作。
传递TZvariables将始终使脚本在该时区运行,而与系统本地时区无关。 如果你不希望这种行为从行中删除TZvariables。
*代表第一个最后,所以如果你设置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输出,并检查您当前的时间和时区设置。