Ответ 1
Я подозреваю (сейчас редактирую: я уверен), что он не делает то, что вы хотите: поля являются отдельными, а */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 часа. Это не. Звезда с шагом - это просто сокращение списка значений в поле, где оно использовалось; он не взаимодействует с другими полями.