LINUX.ORG.RU
ФорумAdmin

Некорректное время запуска задач cron'ом после перевода часов

 


0

1

Доброго времени суток.

Сабж. После перевода часов cron стал выполнять задачи на час раньше, чем нужно

[root@vm-hwmon-ibm ~]# cat /var/spool/cron/viosmon 
00 8 * * * /home/viosmon/viosmon.sh

[root@vm-hwmon-ibm ~]# grep viosmon.sh /var/log/cron
Oct 26 07:00:01 vm-hwmon-ibm crond[30144]: (viosmon) CMD (/home/viosmon/viosmon.sh)
Oct 27 07:00:01 vm-hwmon-ibm crond[4354]: (viosmon) CMD (/home/viosmon/viosmon.sh)
Oct 28 07:00:01 vm-hwmon-ibm crond[11036]: (viosmon) CMD (/home/viosmon/viosmon.sh)
[root@vm-hwmon-ibm ~]# grep viosmon.sh /var/log/cron.1
Oct 19 08:00:01 vm-hwmon-ibm crond[8506]: (viosmon) CMD (/home/viosmon/viosmon.sh)
Oct 20 08:00:01 vm-hwmon-ibm crond[27302]: (viosmon) CMD (/home/viosmon/viosmon.sh)
Oct 21 08:00:01 vm-hwmon-ibm crond[9632]: (viosmon) CMD (/home/viosmon/viosmon.sh)
Oct 22 08:00:01 vm-hwmon-ibm crond[16588]: (viosmon) CMD (/home/viosmon/viosmon.sh)
Oct 23 08:00:01 vm-hwmon-ibm crond[23876]: (viosmon) CMD (/home/viosmon/viosmon.sh)
Oct 24 08:00:01 vm-hwmon-ibm crond[30327]: (viosmon) CMD (/home/viosmon/viosmon.sh)
Oct 25 08:00:01 vm-hwmon-ibm crond[4347]: (viosmon) CMD (/home/viosmon/viosmon.sh)

При этом я абсолютно уверен, что обновления таймзон были установлены, и с тех пор хост был перезагружен, т.е. при запуске cron уже была установлена актуальная таймзона

[root@vm-hwmon-ibm ~]# grep tz /var/log/rpmpkgs.2
tzdata-2014g-1.el5.x86_64.rpm
[root@vm-hwmon-ibm ~]# ls -l /var/log/rpmpkgs.2
-rw-r--r-- 1 root root 31784 Oct 18 04:02 /var/log/rpmpkgs.2
[root@vm-hwmon-ibm ~]# zdump -v /etc/localtime | grep 2014
/etc/localtime  Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400
/etc/localtime  Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800
[root@vm-hwmon-ibm ~]# 
[root@vm-hwmon-ibm ~]# uptime
 10:06:40 up 3 days,  2:33,  3 users,  load average: 0.09, 0.10, 0.09
[root@vm-hwmon-ibm ~]# date 
Tue Oct 28 10:06:42 MSK 2014
[root@vm-hwmon-ibm ~]# date -u
Tue Oct 28 07:06:43 UTC 2014

Что может быть причиной такого странного поведения cron?

Пока основное подозрение в том, что время модификации crontab'а - до перевода, а cron ведёт какую-то свою базу, в utc, и обновляет её при модификации crontab'ов.

Выполнил

[root@vm-hwmon-ibm ~]# ls -l  /etc/crontab /var/spool/cron/viosmon
-rw-r--r-- 1 root    root 564 Mar 19  2014 /etc/crontab
-rw------- 1 viosmon root  37 Mar 25  2014 /var/spool/cron/viosmon
[root@vm-hwmon-ibm ~]# touch  /etc/crontab /var/spool/cron/viosmon

[root@vm-hwmon-ibm ~]# tail -n2 /var/log/cron
Oct 28 10:04:01 vm-hwmon-ibm crond[5009]: (*system*) RELOAD (/etc/crontab)
Oct 28 10:04:01 vm-hwmon-ibm crond[5009]: (viosmon) RELOAD (cron/viosmon)

★★★★★

Последнее исправление: router (всего исправлений: 1)

Ответ на: комментарий от roman77

Я в курсе что такое anacron, как он работает и зачем нужен. Но это не имеет отношения к некорректной работе cron'а

router ★★★★★
() автор топика

Выполнил

И каков результат? Быстрее было бы сделать тестовое задание на ближайшее время и проверить соответствие его выполнения системному времени.

zgen ★★★★★
()
Ответ на: комментарий от zgen

Быстрее было бы сделать тестовое задание на ближайшее время и проверить соответствие его выполнения системному времени.

Уже сделал. Выполнилось на час раньше

25 11 * * * /bin/date > /dev/null
Oct 28 10:21:01 vm-hwmon-ibm crond[5009]: (viosmon) RELOAD (cron/viosmon)
Oct 28 10:25:01 vm-hwmon-ibm crond[21289]: (viosmon) CMD (/bin/date > /dev/null)

После этого перезапустил syslog и cron, и ещё раз добавил тестовые задания. Теперь выполнились вовремя

37 10 * * * /bin/date > /dev/null
40 11 * * * /bin/date > /dev/null

Oct 28 10:33:01 vm-hwmon-ibm crond[26564]: (viosmon) RELOAD (cron/viosmon)
Oct 28 10:37:01 vm-hwmon-ibm crond[29537]: (viosmon) CMD (/bin/date > /dev/null)

Сижу, думаю - почему же одного ребута оказалось недостаточно?

router ★★★★★
() автор топика

Да, такая же фигня. Скрипты на час раньше выполнялись до перезапуска крона. Такая простая вещь, а сколько лет уже решить не могут.

blind_oracle ★★★★★
()
Ответ на: комментарий от blind_oracle

Но в моём случае после обновления таймзоны хост был перезагружен, и всё равно потребовался ещё один рестарт cron

router ★★★★★
() автор топика
Ответ на: комментарий от router

Хм, anacron тоже на час раньше стал запускать задания.

roman77 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.