Как cron обращается с остатками в «очень часто» рабочих местах


13

Если я сделаю это:

*/9 * * * * /path/to/wotnot

В какое время задача будет выполняться через два часа, начиная с 09:00

Это:

09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h03
10h12
10h21
10h30
10h39
10h48
10h57

или B:

09h00
09h09
09h18
09h27
09h36
09h45
09h54
10h00
10h09
10h18
10h27
10h36
10h45
10h54

Ответы:


31

Когда вы смотрите на диапазон, вы интерпретируете его только в этом столбце, поэтому «* / 9» в столбце минут означает «перечислять каждую минуту, а затем выбирать каждое девятое значение». Этот выбор сбрасывается в верхней части часа, поэтому вы перезапускаете в xx: 00, xx: 09, xx: 18 и т. Д. Каждый час.

Его также можно прочитать как «каждые девять минут каждого часа», что подразумевает сброс в начале часа.

Таким образом, реальное поведение, которое вы увидите, соответствует варианту B.


Это единственный ответ, который, кажется, на самом деле отвечает на вопрос. Вы пытались это сделать, чтобы убедиться?
gparent

В течение последних 10 минут? Нет. За последние три месяца? Да, хотя не специально с интервалом в девять минут.
Джон

Не понимаю, почему мне было бы все равно, когда ты это сделал, но только если. Спасибо.
gparent

1
У меня бывшие коллеги разозлились из-за того, что "нет, вы не проверяли это, вы полагаетесь на свою неисправную память!" в подобных ситуациях (конечно, через 5 минут они уходят, раздраженные после того, как я докажу, что это все еще работает), поэтому у меня сформировалась привычка заранее застраховаться от этого.
Джон

2
Первый шаг в тестировании - убедиться, что у вас та же марка и версия, что и у клиента (в данном случае - Джесси). Я пока не вижу здесь никакой подсказки о том, какой cron он использует. (Вероятно, это Vixie Cron, и эта базовая функция, вероятно, стабильна во всех версиях этой программы.)
Kaz

22

Чтобы подтвердить ответ Джона, */nв столбце минут означает «когда минута 0 mod n». Вот crontabзапись:

*/7 * * * *  date >> /tmp/foo

и вот вывод:

Thu Jan 10 14:49:01 GMT 2013
Thu Jan 10 14:56:01 GMT 2013
Thu Jan 10 15:07:01 GMT 2013

Обратите внимание, что промежуток между двумя последними разами не равен семи минутам, потому что после nn: 56 следующий */7матч соответствует `nn + 1: 07.

Да, я знаю, что те времена в будущем (или они были, когда я отправил это); Мне пришлось довольно быстро двигать системные часы вперед, чтобы получить быстрый ответ.


5
+1 за усилие :)
Свен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.