Планировщик заданий cron действительно точен?
Я имею в виду, что мне нужен сценарий для запуска каждую ночь как можно раньше, НО до 00:00 следующего дня.
В идеале я бы запустил работу cron в 23.59 (или в 23:59), но будет ли система действительно точной? Поскольку секунда имеет значение, я должен установить работу cron на 23:58, чтобы оставить ее на некоторое время?
Ответы:
Cron может гарантировать, что ваша работа начнется не раньше указанного времени (в зависимости от точности системных часов). Но нет никакой возможности дать вам какую-либо гарантию о времени прекращения работы. Это будет зависеть от множества факторов:
Я рекомендую изменить ваш дизайн так, чтобы конкретное время выполнения не было обязательным.
источник
O_CREAT
и отметите,O_EXCL
он будет атомарным, пока файл находится в локальной файловой системе.Я полагаю, это зависит от вашего демона cron, но документация и стандарт указывают, что если вы укажете минуты, задание будет выполнено в указанную минуту.
Видеть:
Имейте в виду, что ваш сценарий будет запущен, когда часы перейдут на правильное время, но завершится через некоторое время.
источник
Обычно cron запускается в 23:59:00 , сканирует все файлы crontab, отфильтровывает тех, кто имеет отношение к 23:59, а затем запускает их. Сканирование этих файлов выполняется очень быстро, потому что их не так много, и все они содержат только несколько строк. Поэтому обычно cronjobs начинаются в 23:59:00 или 23:59:01. Есть определенные способы намеренно замедлить этот процесс. (добавить миллионы строк в crontab, например). Если система полностью перегружена, это тоже не будет работать так быстро.
Кроме того, это, очевидно, зависит от реализации.
Если вам нужно очень точное время запуска, вам лучше создать программу, которая спит до нужного времени, а затем запускается (например, с помощью c ++ 11 ). Но на ОС не реального времени это также не будет точным! Также часы ПК не знают точное время!
Во всех случаях это только гарантирует, что программа запускается в (более или менее) нужное время. Не может быть никакой гарантии, что программа завершится успешно до определенного времени, поэтому я твердо верю, что вы должны что-то изменить по этому требованию.
источник
Это зависит от вашего общего времени выполнения скрипта и точности времени сервера.
запустит ваш скрипт точно в 23:59, но если у вас есть какие-то команды, которые работают долго, часть скрипта может быть выполнена после полуночи.
источник