Может ли использование ntpd испортить работу cron? - PullRequest
2 голосов
/ 30 декабря 2011

В моей системе очень много времени, через пару недель она может опередить примерно на 5 минут.

Чтобы это исправить, я установил ntp, который может помочь устранить дрифт и, конечно, время от времени синхронизировать время с серверами ntp.

Предположим, у меня есть работа cron для чего-то вроде резервного копирования файлов. Возможен ли следующий сценарий?

02:00:00 - Cron starts a job
02:00:03 - Ntpd syncs time back 5 seconds to 01:59:58
02:00:00 - 2:00 gets repeated and cron job runs twice

Если задание cron копирует большие файлы, при втором запуске может быть предпринята попытка перезаписать файлы, в которые первое задание не завершило запись.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 31 декабря 2011

Вот что говорит справочная страница cron(8) (это для Vixie cron; другие реализации могут вести себя по-другому):

Существуют особые соображения, когда часы меняются менее чем на 3 часа, дляпример в начале и в конце летнего времени.Если время сместилось вперед, те задания, которые выполнялись бы во время, которое было пропущено, будут запущены вскоре после изменения.И наоборот, если время переместилось назад менее чем на 3 часа, те задания, которые попадают в повторяющееся время, не будут перезапущены.

Только задания, которые выполняются в определенное время (не указано как @hourly,ни с '*' в спецификаторе часа или минуты).Задания, указанные с подстановочными знаками, выполняются немедленно, исходя из нового времени.

Изменение часов более чем на 3 часа считается исправлением часов, и новое время используется немедленно.

1 голос
/ 30 декабря 2011

В этом конкретном сценарии может быть, но я бы посоветовал вам включить механизм блокировки в задание резервного копирования, чтобы он мог запускаться только один раз:

В PERL вы можете сделать следующее:

flock("/tmp/backup-running", LOCK_EX) || die "I'm already running";

Хотя shell не может предоставить вам аналогичный механизм, кроме как с помощью команды:

touch /tmp/backup-running
if [ -f "/tmp/backup-running" ]
then
    exit 0;
fi

....


/bin/rm /tmp/backup-running

, которая подвержена проблемам, другие языки предоставляют вам возможности, аналогичные PERL.

0 голосов
/ 31 декабря 2011

ntp.conf позволяет вам контролировать частоту подключения ntp к серверу времени для внесения исправлений. Минимальное значение по умолчанию составляет 64 секунды (minpoll), а значение по умолчанию для maxpoll составляет 1024 секунды. смотри man ntp.conf

Поэтому, если вы корректируете время вручную в то время, когда оно не будет влиять на вещи, а затем запустите ntp, величина дрейфа будет небольшой, очень сильно изменяется в секунду.

У одного из наших m4000 есть такие часы, и у нас никогда не было проблем.

Примечание. Единственная проблема с файлом блокировки состоит в том, что если резервное копирование серьезно прекращается, резервные копии больше не будут запускаться, пока файл блокировки не будет сброшен.

...