Чи обробляє посіви літній час +1 години?


16

Минулих вихідних нам довелося змінити час з 02:00 на 03:00.

Питання: Що було б, якщо в 02:30 з'явилася блязка?

crond - це дуже старе рішення для планування, воно, ймовірно, має впоратися з цим, але не знаю як.

Відповіді:


18

Це, мабуть, залежить від вашої реалізації крона, але популярний крон Vixie в керівництві:

Потім cron прокидається щохвилини, вивчаючи всі збережені crontabs, перевіряючи кожну команду, щоб побачити, чи слід її виконувати в поточній хвилині.

і

Особливі міркування існують, коли годинник змінюється менше ніж на 3 години, наприклад на початку та в кінці літнього часу. Якщо час перемістився вперед, ті завдання, які запускалися б у пропущений час, будуть запущені незабаром після зміни. І навпаки, якщо час перемістився назад менше ніж на 3 години, ті завдання, які потрапляють у повторний час, не будуть повторно запущені.

Зачіпаються лише завдання, які виконуються в певний час (не вказано як @hourly, ні з "*" в специфікаторі години або хвилини). Роботи, визначені за допомогою макетів, виконуються безпосередньо за новим часом.

Оскільки зміна DST становила менше 3 годин, ваша програма запуститься незабаром після 3:00 ранку

Я не впевнений, чи це специфічна поведінка для Vixie cron, я, мабуть, пригадую, ось так працював мій PDP-11 ще в 80-х, але я не впевнений.


2
Нічого собі, знання з 80-х - Шапки геть!
Ісаак

правило: раз на рік, ваші крони в цей годинний діапазон не працюватимуть. раз на рік ваші крони будуть працювати два рази. слідство: це не завжди так. пов'язано: припиніть використовувати локальні часові пояси!
tedder42

@ tedder42, будь ласка, надайте посилання, ваші претензії суперечать як документації, так і фактичній поведінці cron.
Антон


Цей анекдотичний випадок посилається на 2 та 3 години ночі і не має відношення до питання (яке стосується 2:30) вечора. Ваші посилання можуть бути цікавими (старими) поведінками, це не відповідає моєму досвіду. І запуск сервера без часового поясу має свої проблеми.
Антон

2

Найкраще рішення - ваш комп'ютер працює з апаратним годинником, встановленим на UTC, (Універсальний координований час), AKA GMT або зулуський час, і лише змінити спосіб відображення часу, встановивши місцевий часовий пояс, щоб дозволити світловий день. час перейняти.

У SUSE Linux, і, мабуть, у більшості інших, якщо Система апаратних годин -> Навколишнє середовище -> Годинник -> HWCLOCK встановлена ​​на UTC зі знаком -u, тоді ваш часовий пояс встановлений у тому місці, де ви знаходитесь в системі, автоматично відображатиме місцевий час з виправленнями DST для вас.

Це має ряд переваг:

  • Вам більше ніколи не доведеться знову вручну налаштовувати годинник для зміни DST
  • Вкладки CRON зберігатимуться та виконуватимуться у UTC час
  • Якщо файл, наприклад, журнал, записується о 01:30 до закінчення DST, а інший - о 01:20 після закінчення DST, цей файл все ще буде "новішим", ніж інший, оскільки часові позначки файлів будуть UTC та щойно переведений для відображення на основі поточного часового поясу на час відображення.

Для отримання додаткової інформації введіть man hwclockтермінал.


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