Я желаю запустить script каждые 45 минут (а не: 45-я минута каждого часа)
например. 10:00, 10:45, 11:30, 12:15 и т.д.
*/45 * * * *
Не уверен, что это правильное выражение.
Я желаю запустить script каждые 45 минут (а не: 45-я минута каждого часа)
например. 10:00, 10:45, 11:30, 12:15 и т.д.
*/45 * * * *
Не уверен, что это правильное выражение.
Я подозреваю (сейчас редактирую: я уверен), что он не делает то, что вы хотите: поля являются отдельными, а */45
для минут - не более чем 0,45
. Я бы использовал следующие три записи, если */45
не выполняет задание:
0,45 0-23/3 * * *
30 1-23/3 * * *
15 2-23/3 * * *
Если вы посмотрите файл entry.c
в источниках vixie cron, вы заметите, что каждое поле каждой записи анализируется get_list
и представлено как растровые изображения допустимых значений для этого поля. Это почти исключает любую "умную" интерпретацию, поскольку на этом этапе теряется различие */45
и 0,45
... но есть флаг MIN_STAR
, установленный в присутствии *
в минутах (включая */45
). Итак, взглянем на cron.c
, на одно место, где исследуется MIN_STAR
, чтобы узнать, что это не связано с нашей проблемой. Теперь мы точно знаем, что */45
означает "каждые 45 минут каждого часа": 0:00, 0:45, 1:00, 1:45 и т.д.
Здесь было два ответа, уверенно заявляющих об обратном, цитируя неудачный отрывок в руководстве:
Шаги также разрешены после звездочки, поэтому, если вы хотите сказать "каждые два часа", просто используйте "*/2"
Нам повезло, что у нас есть 24-часовой день, содержащий четное количество часов, делая "каждые два часа с 0:00, каждый день" и "каждые два часа вообще" неразличимы. Жаль, что руководство не зашло достаточно далеко, чтобы документировать нетривиальные случаи, создавая впечатление, что * */22
означает каждые 22 часа. Это не. Звезда с шагом - это просто сокращение списка значений в поле, где оно использовалось; он не взаимодействует с другими полями.
При базовом времени cron ваша система проверяет один раз в минуту, чтобы увидеть, есть ли какие-либо cronjobs для запуска. Он будет смотреть на ваш кронтаб, и если пришло время бежать, то он побежал! Но каждые 45 минут - это интервал, который всегда будет на 15-минутной отметке на циферблате. например, начиная с нуля, первый - 0:45. Далее будет 90 минут с нуля или 1:30, а следующий будет 2:15... так легко вы можете видеть, что время для каждого экземпляра, который вы хотите исполнить, script, минутная стрелка будет на 12, 3, 6 или 9. Если вы выполняете свой script каждые 15 минут и проверяете час, чтобы узнать, является ли он правильным, вы можете выполнить свой script. Вероятно, вы используете либо таблицу, либо вы можете использовать функцию modulo. Ура!