При планировании работы каждые x
часов, как узнать, какие часы будут выбраны?
Например, у нас есть задание cron для */8
который запускается в 2, 10 и т. д. вместо полуночи, 8 утра и т. д.
Попробуй это:
0 2-18/8 * * * /path/to/your/script
Покажите журналы cron, подтверждающие это.
Возможно, cron или система работает в другом часовом поясе?
Чтобы прояснить ситуацию, мы на самом деле видели графики Это показало, что работа началась в 2:00, 10:00 и т. д.
Изучив проблему, мы обнаружили, что cron запускается с TZ=UTC
, пока /etc/timezone
установлен на Europe/Zurich
. Кажется, cron был перезапущен в то время, когда /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:00 (полночь по всемирному координированному времени), 10:00 (8:00 по всемирному координированному времени) и т. д.
передача переменной TZ всегда будет запускать скрипт в этом часовом поясе независимо от местного часового пояса вашей системы. Если вы не хотите такого поведения, удалите переменную TZ из строки.
Символ * означает первый-последний, поэтому, если вы настроили 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 и проверьте текущие настройки времени и часового пояса.