Випуск часового поясу з cron


11

Мої завдання Cron обчислюються на годину пізніше порівняно з часом сервера. Я не розумію, що відбувається.

Моя конфігурація така:

Час сервера:

Europe/Paris

У / etc / default / cron я додав такий рядок:

TZ="Europe/Paris"

Незважаючи на це, завдання Cron запускаються на годину пізніше, ніж час сервера. Що насправді хитро, це те, що якщо я попрошу cron відіграти інструкцію "date", вона дає серверну дату (хорошу!).

Я не маю уявлення про те, як вирішити цю проблему; Я дещо читав на форумах, але нічого цікавого не знайшов.

Що ти думаєш ?


4
Тож задачі на крон плануються в UTC. Сторінка людини Vixie cron каже: "Демон буде використовувати, якщо є, визначення з / etc / timezone для часового поясу". Що там /etc/timezone? Ви змінили /etc/timezoneнещодавно, ніж cronпроцес був запущений? Ви пробували /etc/init.d/cron restart?
Кіт Томпсон

3
/ etc / timezone нещодавно було змінено, без перезавантаження /etc/init.d/cron. Я спробую її перезапустити.
Гійом Лебуржуа

Відповіді:


16

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

Таким чином, завдання на крон плануються в UTC ( Europe/Parisце за годину зміщення від UTC).

Сторінка людини Vixie cron говорить:

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

Що там /etc/timezone? Ви модифікували /etc/timezoneнещодавно, ніж розпочали процес крона? Ти намагався

/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 просто інтерпретують записи crontab в налаштуваннях часового поясу системи, під яким запускається сам демон cron. Це може викликати суперечки, якщо велика багатокористувацька машина має користувачів у декількох часових поясах, особливо якщо часовий пояс системи за замовчуванням включає потенційно заплутаний DST. Таким чином, реалізація крона може спеціально застосовувати будь-які рядки налаштування змінної середовища "TZ =" у кронових вкладках користувача, інтерпретуючи наступні записи crontab щодо цього часового поясу

Тож можливо ваш ідентифікатор для входу має налаштування TZ, яке відрізняється від системного налаштування TZ?


1

Перезапуск крона - це те, що мені було потрібно, але для мене команда була

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

0

Щойно зрозумів це на Ubuntu 14/16. Для мене прекрасно працювали.

Кроки (судо маються на увазі):

  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

Де cronперезапустити?
DavidPostill

Мені не потрібно було перезапускати cron.
Варун Чандак
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.