1

У меня странное поведение одного правила, работающего неожиданно.

*/40 * * * * myshellcommand here

Я думал, что это будет работать каждые 40 минут, например

00.00
00.40
01.20
02.00
etc

но вместо этого он работает

00.00
00.40
01.00
01.40
02.00
etc.

У кого-нибудь есть идеи, что может быть не так?

1 ответ1

3

Нет ничего плохого Это работает как задумано. * сбрасывается в начале каждого часа / дня / месяца. Другими словами, * является заменой для максимального диапазона рассматриваемого значения. Таким образом, * в столбце минут обозначается 0-59, а * / 40 означает «начиная с 0, запускать каждые 40 минут до 59». Смотрите 'Специальные символы' на странице cron Wikipedia для получения дополнительной информации.

Что вам, вероятно, нужно сделать, это запускать работу каждые 20 минут, и программа должна решить, должна ли она выполняться. Или сделать это с двумя строками

0,40 0,2,4,6,8,10,12,14,16,18,20,22 * * * myshellcommand
20   1,3,5,7,9,11,13,15,17,19,21,23 * * * myshellcommand

Обратите внимание, что это можно записать в несколько более компактной форме:

0,40 */2    * * * myshellcommand
20   1-23/2 * * * myshellcommand

В этом случае */2 обозначает каждый второй час, начиная с 0 (поскольку * эквивалентно 0-23), а 1-23/2 обозначает каждый второй час, начиная с 1-го часа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .