11

Мои задания cron вычисляются на час позже по сравнению с серверным временем. Я не понимаю, что происходит.

Моя конфигурация следующая:

Время сервера:

Europe/Paris

В /etc /default /cron я добавил следующую строку:

TZ="Europe/Paris"

Несмотря на это, задания cron запускаются на час позже времени сервера. Что действительно сложно, так это то, что, если я прошу cron воспроизвести инструкцию "date", она выдаст дату сервера (хорошая!).

Я понятия не имею, как решить эту проблему; Я немного читал на форумах, но ничего интересного не нашел.

Как вы думаете ?

5 ответов5

15

(Копирую мой комментарий как ответ, так как это оказалось решением; я угадала правильно.)

Таким образом, в UTC запланированы рабочие места cron (Europe/Paris находится на расстоянии одного часа от UTC).

На странице руководства Vixie cron написано:

Демон будет использовать, если присутствует, определение из /etc /timezone для часового пояса.

Что находится в /etc/timezone? Вы изменили /etc/timezone совсем недавно, чем был запущен процесс cron? Ты пытался

/etc/init.d/cron restart

?

3

Некоторые дистрибутивы, такие как Fedora, предоставляют механизм, в котором вы можете установить CRON_TZ= для переопределения вашего часового пояса по умолчанию.

От Fedora man 5 crontab

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

Что-то вроде этого:

#m  h           d   m   wday    command
CRON_TZ="Europe/Paris"
5   0,6,12,18   *   *   *       /path/to/script.bash
1

Перезапуск cron был тем, что мне было нужно, но для меня команда была

/etc/init.d/crond restart (crond not cron)
1

Википедия говорит

Большинство реализаций cron просто интерпретируют записи crontab в настройках системного часового пояса, при которых запускается сам демон cron. Это может стать источником спора, если большая многопользовательская машина имеет пользователей в нескольких часовых поясах, особенно если системный часовой пояс по умолчанию включает потенциально сбивающее с толку летнее время. Таким образом, реализация cron может в особых случаях использовать любые строки установки переменной окружения "TZ =" в пользовательских crontabs, интерпретируя последующие записи crontab относительно этого часового пояса.

Так что, возможно, ваш логин имеет настройку TZ, которая отличается от настройки TZ системы?

0

Только что понял это на Ubuntu 14/16. Работал отлично для меня.

Шаги (подразумевается sudo):

  1. cat /etc/timezone
  2. rm -fv /etc/localtime
  3. ln -s /usr/share/zoneinfo/Asia/Kolkata /etc/localtime
  4. apt install -y --reinstall tzdata
  5. /etc/init.d/rsyslog restart
  6. tail -f /var/log/syslog
  7. cat /etc/timezone

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .