Запускайте роботу Cron кожні N хвилин плюс зміщення


251

*/20 * * * *

Переконайтесь, що вона працює кожні 20 хвилин, я хотів би виконувати завдання кожні 20 хвилин, починаючи з 5-ї години, чи можливо це за допомогою Cron? Було б:

5/20 * * * * ?


10
Дякую вавилонянам, які вирішили, що наша система часу повинна бути точно поділена на 1,2,3,4,5 та 6.
arivero

3
якщо воно ділиться на 2 і 3, воно також ділиться на 6
Зіофіл

Відповіді:


514

Щоб виконувати завдання кожні 20 хвилин, починаючи з п'ятої години, спробуйте:

 5-59/20 * * * *

Пояснення

Поле *хвилини - це те саме, 0-59/1де 0-59знаходиться дальність і 1є кроком . Команда буде виконуватися з першої хвилини в діапазоні (0), потім у всі послідовні хвилини, віддалені від першої за кроком (1), до останньої (59).

Ось чому */20 * * * *буде працювати через 0 хвилин, через 20 хвилин і через 40 хвилин - це те саме, що кожні 20 хвилин. Однак */25 * * * *буде працювати через 0 хвилин, 25 хвилин після і 50 хвилин після - що не те саме, кожні 25 хвилин. Ось чому зазвичай бажано використовувати значення кроку в хвилинному полі, яке рівномірно ділиться на 60.

Отже, щоб компенсувати час початку, чітко вкажіть діапазон і встановіть перше значення на суму зміщення.

Приклади

5-59/20 * * * * почне працювати через 5 хвилин, через 25 хвилин і через 45 хвилин.

10-59/25 * * * * буде працювати через 10 хвилин після та 35 хвилин після.

1-59/2 * * * * буде працювати кожну дивну хвилину.


3
це прекрасно працює. Як ви це дізналися? Чи можете ви вказати мені на документи? Дякую.
AJP

12
Різноманітні пошуки в Google привели мене до цієї відповіді про помилку сервера . Була помилка, яка мене дуже збила з пантелику, тим більше, що інші результати припускали, що крок модуля повинен дорівнювати нулю . Нарешті я знайшов цю сторінку керівництва, яка дала мені відповідь. Як результат, мені вдалося прокоментувати відповідь про помилку сервера, яка тепер була виправлена. Я не пам’ятаю фактичних пошукових термінів, якими я користувався для пошуку сторінки IBM.
токсалот

3
Дякую та дуже добре працюю @toxalot, я б хотів, щоб ми могли нагородити вас знаком "Невтомний слідчий"! : P
AJP

5
ЛОЛ. Мені потрібно було запускати роботу кожні 10 хвилин (зсув на 5), і я справді не хотів використовувати список з комами, тому я вирішив знайти відповідь.
токсалот

2
На жаль, CPanel, на жаль, не подобається :(
Роберт Вент,

53

Звичайно!

5,25,45 * * * * /your/cron

2
Дякую. Я закінчив це робити, сподівався, що це може бути більш елегантне рішення.
AJP

13
Іноді просте рішення краще, тому що його легко читати і розуміти. Мені подобається знати, що 5-59/20це можливо, але 5,25,45має перевагу в тому, що відразу зрозуміло, що це робить.
thomasrutter

2
лише якщо ваш крок досить великий
Tebe

3
Це набагато кращий приклад. Щоб зрозуміти, коли робота починається, потрібно 0 когнітивних навантажень.
Ділан Пірс

11

Ви можете спробувати: */5 * * * * sleep N; your job


4
Я не бачу в цьому нічого поганого - насправді це дуже схоже на те, як робота в системі certbot досягає випадкового зміщення, що допомагає підтримувати збалансованість завантаження сервера. Впевнений, не заслуговує всіх цих подій
billynoah

6
Це змусило мене замислитися, як спати випадкову кількість секунд. sleep `shuf -i 1-100 -n 1`робить трюк.
Лайзер

чорт, @Laizer, ти змусив мене знову щось навчитися! (дякую!)
UncaAlby
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.