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

9

Пример выпуска:

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

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

Работаю на

* * * * * /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 / tree для поиска 'clock' подтверждает, что у меня там нет файла с таким именем.

Проверяется, установила ли переменная CRON_TZ все, что мне известно. Он не установлен ни на уровне пользователя, ни на уровне корней. Имейте cron эхо их, не дает никакого выхода.

jmurrayufo
источник
1
Является ли CRON_TZнабор окр вар где - нибудь?
thrig
попробуйте hwclock --systohcпросто для полноты и добавить cat /etc/sysconfig/clockк вопросу?
Стив
Добавил оба предложения в мою информацию, к сожалению, ни один из них не дал большой ценности. CRON_TZ не установлен ни в какой среде, которую я вижу, повторная синхронизация hwclock дала те же результаты, что и раньше (в любом случае проверил, не изменился ли он), и у меня нет '/ etc / sysconfig / clock ' файл.
jmurrayufo

Ответы:

1

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

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

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

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

Брюс Эдигер
источник
/etc/init.d/cron захватывает /etc/timezoneфайл. ТЗ = cat /etc/timezone. Этот файл кажется правильным (запустил контрольную сумму, чтобы удостовериться, что она идентична той, что должна быть). /lib/systemd/system/crond.service не хочет изменять какие-либо переменные TZ. Я собираюсь проверить предложение * / 2, чтобы увидеть, вижу ли я то же самое.
jmurrayufo