Мы запускаем сервер Redhat (2.6.33.3-85.fc13.x86_64) и испытали странное поведение с нашей настройкой cron. Мы запускаем установку cron прямо из коробки.
У нас есть задача, которая выполняется ежедневно в 2 часа ночи и успешно справляется с этим уже много месяцев. Однако вчера (27.03.2011) утром было запущено 8 экземпляров задачи.
Вот соответствующий раздел нашего файла журнала cron:
...
Mar 27 02:00:01 fs1 CROND[19557]: (root) CMD (true && /home/youdev/you_server/NEW_FS1/housekeeping_scripts/copy_pdf_printer_files_to_fs2.sh)
Mar 27 02:00:01 fs1 CROND[19563]: (youdev) CMD (true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh)
Mar 27 02:00:02 fs1 CROND[19597]: (youdev) CMD (true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh)
Mar 27 02:00:12 fs1 CROND[19931]: (youdev) CMD (true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh)
Mar 27 02:00:22 fs1 CROND[20060]: (youdev) CMD (true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh)
Mar 27 02:00:32 fs1 CROND[20067]: (youdev) CMD (true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh)
Mar 27 02:00:42 fs1 CROND[20077]: (youdev) CMD (true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh)
Mar 27 02:00:52 fs1 CROND[20084]: (youdev) CMD (true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh)
Mar 27 02:01:02 fs1 CROND[20094]: (youdev) CMD (true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh)
Mar 27 02:01:02 fs1 CROND[20095]: (root) CMD (run-parts /etc/cron.hourly)
Mar 27 02:01:02 fs1 CROND[20096]: (root) CMD (true && /home/youdev/you_server/NEW_FS1/housekeeping_scripts/copy_pdf_printer_files_to_fs2.sh)
Mar 27 02:01:02 fs1 run-parts(/etc/cron.hourly)[20095]: starting 0anacron
...
Каждый из сценариев fetch_db_data.sh запускается правильно (это просто сценарий оболочки, вызывающий rsync, а файлы rsync tmp существуют, как и файлы, которые были успешно синхронизированы).
Это единственное имеющееся у нас задание, которое начинается в 02:00, но у нас есть задание, которое выполняется в минуту (copy_pdf_printer_files_to_fs2.sh), и оно правильно выполнялось только один раз в 02:00.
Единственное, что, как мы можем предположить, могло вызвать это, - это проблема с переходом на летнее время (мы находимся в Великобритании, поэтому перешли с GMT на BST в 02:00 того дня) - однако все проведенные нами раскопки говорят, что cron отлично справляется с проблемами перехода на летнее время. И даже тогда, разве мы не должны были ожидать 0 прогонов (время пропущено с 00:59 до 02:00), а не 8?
Вот запись в crontab:
MAILTO=XXX@XXX.YYY
# BACKUP LATEST DB FROM LIVE (takes approx one hour)
0 2 * * * true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh
Большое спасибо за чтение этого и за любую помощь и предложения,
Крис.
Пожалуйста, обратитесь к Даниэлю ван Идену ответ спрашивать Задание Cron выполняется несколько раз при переходе на летнее время:
Это известная ошибка:
http://bugs.centos.org/view.php?id=5590
https://bugzilla.redhat.com/show_bug.cgi?id=436694
Я видел, как это происходило на CentOS 6.2 с cronie-1.4.4-7.el6.x86_64 31 марта (CET -> CEST)
С этим я бы использовал бритву Оккама. Часы летнего времени обязательно изменятся.