Что может привести к тому, что cron запустится дважды в один и тот же момент?

Что может привести к тому, что cron запустится дважды в один и тот же момент?

У меня есть cron, который настроен на запуск каждый понедельник в 1:00 ночи.

0 1 * * 1 /script/dir/script >> /script/dir/file.log

После двух лет работы, как и ожидалось, он запустился дважды 18 июня, причем второй вызов произошел на ½ - 1 секунду позже первого. Что могло вызвать это?

Ни в первый, ни во второй раз его не запускал человек.

Скрипт связан с веб-сайтом, но находится за пределами корневого каталога документов.

Возможно ли, что часы были синхронизированы в тот же момент, переведя их на 1 секунду назад и перезапустив cron в 1 час ночи?

решение1

Возможно, Джиппи все-таки что-то задумал: хотя дополнительная секунда действительно была введена 1 июля, в настоящее времяошибка в некоторых системах времени GPS(пожалуйста, прочитайте всю ветку), что приводит к тому, что високосные секунды объявляются постоянно. Другими словами, флаг високосной секунды объявляется многими ведущими источниками времени каждый день с 30 июня. Это исправляется, как мы говорим, снова см. ветку писем NTP questions. Многочисленные системы были затронуты 31 июля/1 августа из-за этого,как30 июня (сбои ядра Linux) / 1 июля (проблемы с процессором Java).

Странно, что это произошло 18 июня. Было ли в журнале ядра сообщение «Вставлена ​​дополнительная секунда» примерно в это же время? Находится ли ваш сервер в UTC+1 (BST)? Если вы видите сообщение о дополнительном времени в журнале ядра, какая у вас версия ntpd и версия ядра? Во всех версиях ntpd, с которыми я сталкивался, дополнительное время распространяется на ядро ​​только в последний день месяца, так что вся теория о дополнительной секунде может быть здесь отвлекающим маневром.

решение2

Мой ответ ниже должен бытьнеправильный, Я перепутал дату: последняя дополнительная секунда была вставлена ​​30 июня 2012 года в 23:59:60 UTC. А не 18 июня.


В тот день была введена дополнительная секунда.

Високосные секунды не так предсказуемы, как високосные годы, они обычно возникают из-за крупных землетрясений, цунами, ... и тому подобного. Где високосныегоддостаточно предсказуемо (примерно каждые четыре года) високосная секунданет. Есть комиссия из светлоголовых людей (я думаю, в ООН), которая решила, что нужно ввести дополнительную секунду. Это можно предсказать только примерно за 60 дней. Многие системы не любят, когда время идет от ...:59 до ...:60, прежде чем перейти к ...:00. Базы данных не любят, когда время переводится на секунду назад, они очень придирчивы к временным меткам, которые встречаются только один раз.

https://en.wikipedia.org/wiki/Leap_second#Объявление_о_leap_seconds

решение3

У меня тоже был двойной запуск cron. Два одновременных скрипта читают и удаляют сообщения об ошибках. Все время возвращался к этой теме, чтобы посмотреть, нашел ли кто-нибудь что-то новое!

Но я только что понял, что это была двойная запись cron. У меня была запись в /etc/crontab для запуска всех скриптов в /etc/cron.quarter, и у меня была запись в /etc/cron.d, также вызывающая тот же скрипт в то же время.

Не настолько интеллектуально строгая задача, как отладка проблем с дополнительной секундой!

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