Задания Cron выполняются с разницей в 1 час, что полностью расходится с системным временем.

Задания Cron выполняются с разницей в 1 час, что полностью расходится с системным временем.

Пример проблемы:

* 9 * * * echo 9
* 10 * * * echo 10

Вышеуказанный код будет отправлять пользователю электронное письмо каждую минуту, но все ответы «9» будут приходить в интервале с 10:00 до 10:59, а ответы «10» будут приходить в интервале с 11:00 до 11:59.

Выполнение работы

* * * * * /bin/date ; /bin/date -u

Возвращает ожидаемую (правильную) дату и время. Это было верно как для UTC, так и для местного времени (Америка/Денвер). Изменение этого задания на запуск каждую минуту в определенный час приводит к смещению (задания, которым было сказано запуститься в 9, запускаются в 10 и т. д. и т. п.).

Текущая отладка, которую я завершил:

Ладно, это странно. Может, мой файл часового пояса как-то испорчен? Давайте проверим это

diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`
Files /etc/localtime and /usr/share/zoneinfo/America/Denver are identical

Я проверил аппаратные часы, чтобы убедиться, что они отключены или как-то не соответствуют моим локальным настройкам (запуск от имени root).

date ; hwclock
Wed Oct 26 10:50:13 MDT 2016
Wed 26 Oct 2016 10:50:14 AM MDT  -0.204171 seconds

Похоже, что отклонение составляет всего секунду, но это не должно привести к тому, что мои задания cron будут выполняться на целый час позже запланированного, верно?

Я также уверен в следующем:

  • Изменился ли мой часовой пояс в последнее время?Нет
  • А вы пробовали вручную исправить часовой пояс?Да
  • Вы сбросили cron после исправления часового пояса?Да
  • Убедился ли я, что служба cron была перезапущена?Да
  • Перезапустил ли я службу cron?Да
  • Вы действительно уверены, что cron был перезапущен?100% уверен, что Cron был перезапущен

Другая потенциально важная информация:

Работает на Debian.

cat /etc/debian_version
8.6

Текущее ядро

uname -a
Linux BigBox 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux

Обновленная отладка:

Запустил 'hwclock --systohc', не заметил заметных изменений в поведении. Запустил эту команду для проверки

date;hwclock
Wed Oct 26 12:39:09 MDT 2016
Wed 26 Oct 2016 12:39:11 PM MDT  -0.875328 seconds

Я не могу запустить 'cat /etc/sysconfig/clock', так как этот файл не существует. Запуск команды find в дереве /etc/ для поиска 'clock' подтверждает, что у меня нет там файла с таким именем.

Проверил, не установило ли что-нибудь из известных мне переменную CRON_TZ. Она не установлена ​​ни на уровне пользователя, ни на уровне корней. Вызов cron echo их не даст никакого результата.

решение1

Еще одно место для поиска: скрипт(ы) start-at-boot для cron, или файл crontab старой школы системы /etc/crontab. Возможно, что переменная окружения TZ устанавливается, скажем, /etc/init.d/cronieили /lib/systemd/system/crond.service, я не уверен, что Debian использует для init system.

Я видел что-то подобное, когда пытался запускать crondчто-то каждый час:

0 */2 * * * /opt/dbms/rainstor/archiving/ama_term

crondзапустил скрипт по нечетным часам. Я подозревал, но так и не доказал себе, что это связано с путаницей с летним временем.

Связанный контент