Синтаксический запрос crontab - PullRequest
1 голос
/ 23 мая 2011

что означает этот синтаксис crontab

"*/15 * * * 2-5"

Я думал, что это означает, что он запускается каждые 15 минут каждый час, со вторника по субботу. Могу ли я изменить это на:

"*/55 * * * 2-5"

это, похоже, не работает по какой-то причине.

Можете ли вы объяснить, что такое * / в начале?

Спасибо

Ответы [ 5 ]

6 голосов
/ 23 мая 2011

Ваш первый пример должен быть в порядке, если вы хотите, чтобы он запускался каждые 15 минут. 2-5 на 5-й позиции относится ко вторнику по пятницу.

Что вы хотите сделать с */55?

Хорошее объяснение синтаксиса можно найти в Википедия:

Звездочка (*)

Звездочка указывает, что cron выражение будет соответствовать для всех значений поля; например, используя звездочку в 4-м поле (месяц) будет указывать каждый месяц.

Косая черта (/)

Трещины используются для описания приращения диапазонов. Например 3-59 / 15 в 1-м поле (минуты) будет указывать на 3-ю минуту час и каждые 15 минут после этого. Форма "* / ..." эквивалентна Форма "0-59 /...".

2 голосов
/ 23 мая 2011
"*/15 * * * 2-5"

*/15 НЕ означает, что он запускается каждые 15 минут после каждого часа ... /15 - это индикатор шага, то есть он запускается каждые 15 минут (т. Е. 4 раза в час)

Со страницы руководства:

> man 5 crontab

Steps are also permitted after an asterisk, 
so if you want to say ``every two hours'', 
just use ``*/2''.

Так что используйте нотацию */ только если вы хотите что-то запустить несколько раз, т.е. несколько раз в час, несколько раз в день и т. д.

Peter

2 голосов
/ 23 мая 2011

*/xx означает каждые хх единицы времени.

В вашем примере */15 означает каждые 15 минут =>: 15: 30: 45

*/55 будет каждые 55 минут, он будет запускать сценарий через 55 после каждого часа (10:55, 11:55, 12:55 ....)

0 голосов
/ 19 мая 2016

Ответ Хайме Герроро близок к правильному поведению на RHEL 7.2 Вот мои выводы. С записью cron как

*/55 * * * * /root/test.sh &>> /root/output.log

Я получаю поведение

=== Start /root/test.sh Wed May 18 19:55:01  ===
=== Start /root/test.sh Wed May 18 20:00:01  ===
=== End /root/test.sh Wed May 18 20:02:35  ===
=== End /root/test.sh Wed May 18 20:03:44  ===

Объяснение из вики, https://en.wikipedia.org/wiki/Cron

например, ввод * / 5 для поля дня иногда выполняется после 1, 2 или 3 дня, в зависимости от месяца и високосного года; это потому что cron не имеет состояния (он не помнит время последнего выполнения и не считать разницу между ней и сейчас, необходимую для точного подсчет частоты - вместо этого, cron - просто сопоставитель паттернов).

0 голосов
/ 14 июля 2015

вопреки народным преданиям * / xx НЕ означает каждые xx единицы времени.

шаблон / означает приблизительно каждые xx единицы времени, но не в концедиапазон .

работает только тогда, когда xx равномерно делится на единицу (т. е. в течение минут или секунд, то есть только / 2, / 3, / 4, / 5, / 6, /8 и / 12)

, например * / 5 будет повторяться каждые 5 дней большую часть времени, за исключением тех, что в конце месяца, когда оно повторяется через 1, 2 или 4 дня, в зависимости от месяца и високосного года.

, так как 55 настолько близок к 60, что на самом деле будет работать так, как вы намереваетесь, но просто по стечению обстоятельств (из-за округления).если бы вы написали * / 25, он работал бы два раза в час, в: 25 и: 50

...