Почему cronjobs работают не вовремя?

10

У меня есть настройка cronjobs для ежедневного запуска на моем сервере Ubuntu.

например. 0 4 * * * команда

Они бегут, за исключением того, что они бегут на 8 часов раньше. При настройке сервера изначально было установлено время UTC. Я побежал, sudo dpkg-reconfigure tzdataчтобы установить сервер на CST, который на 6 часов отстает от UTC. Интересно, что я нахожусь в PST, который на 8 часов отстает от UTC, но я не понимаю, как сервер мог это узнать.

Если я запускаю команду date, она показывает время в CST.

Там должно быть какое-то место, где время настроено неправильно. Где я могу посмотреть, чтобы решить эту проблему?

Мэтт Маккормик
источник

Ответы:

21

Вы не забыли перезапустить cron после смены часового пояса? Если нет, то cron может по-прежнему иметь старое представление о часовом поясе с момента его первоначального запуска.

Хотя это не является строго необходимым, я обычно рекомендую перезагрузить компьютер после изменения часового пояса - часовой пояс сервера никогда не должен изменяться (или, по крайней мере, он должен быть ОЧЕНЬ нечастым), и это гарантирует, что каждая программа на сервере была перезапущена и знает об изменении :-)

voretaq7
источник
Нет, я не перезагружался. Я сделал это и буду ждать, чтобы увидеть, если это проблема (что я думаю, что это может быть).
Мэтт Маккормик
После перезапуска службы cron она теперь работает в то же время с часовым поясом, который я установил с помощью tzdata. Спасибо.
Донни Курния
1
Я заметил, что записи в / var / log / cron показывают неправильное время даже после перезапуска crond. Перезапуск rsyslog устранил эту проблему.
Зимхан
@WildVelociraptor Да, syslog также будет использовать старые данные о часовых поясах, пока не будет перезапущен (поэтому он будет помечать метки времени неправильно, даже если они работают в нужное время). Все остальное, работающее долго и запущенное до изменения данных о часовом поясе, будет демонстрировать аналогичное поведение, поэтому обычно указывается перезагрузка.
voretaq7
7

Что касается меня, я обнаружил, что когда я запускаю hwclockкоманду, время на час отличается от времени , когда я запускаю dateкоманду. Чтобы исправить это, вы можете позвонить, hwclock --systohcкоторый синхронизирует два раза и запустить cronjobs в ожидаемое время.

ajon
источник
В моем случае оба dateи hwclockсообщают идентичное время, но cron все еще не делает то, что я ожидал.
unfa
Вы спасаете мою жизнь, спасибо большое hwclock --systohc исправляет неправильную дату для меня =)
Маркус Дж. Кеннеди