Cronjob на основе системного времени или его собственного времени

Cronjob основывается на системном времени или времени своего времени? Если это системное время, когда я меняю системное время вручную, будет ли cronjob следовать за новым временем настройки соответственно?

2 Solutions collect form web for “Cronjob на основе системного времени или его собственного времени”

cron использует системные часы, которые он проверяет каждую минуту. Для внесения изменений в системные часы может оказаться полезным следующий отрывок из man страницы:

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

Если вы перемещаете свои часы с 12:04 до 12:06, и у вас запланировано задание на 12:05, они не будут работать.

Если вам нужно выполнять задание в 12:05 каждый день или при первой возможности после этого (после включения питания или системных часов), то выполняйте эту работу каждую минуту (или с более длинным интервалом, если это приемлемо), и его скрипт проверяет, был ли этот последний сеанс запущен в этот день на основе некоторого файла состояния. Если этот файл статуса существует и обновляется, скрипт должен немедленно выйти (т.е. он запустился в 12:05 или как можно раньше, чтобы запустить его). Если нет, установите файл состояния и запустите оставшуюся часть скрипта, поэтому любые дальнейшие вызовы ничего не сделают, пока часы не достигнут 12:05 на следующий день.

Особенно, если задание занимает больше времени, важно сначала обновить файл состояния, а затем продолжить выполнение, иначе проверка 12:06 не найдет обновленный статус и не начнет параллельное выполнение другого задания.

Interesting Posts
Linux и Unix - лучшая ОС в мире.