AGG Software
Задать вопрос  В начало  Назад  Дальше

Время в формате "Cron"

Cron-формат - это простой, но мощный и гибкий способ описания времени и периодичности действий. Традиционный (унаследованный из мира Unix) cron-формат состоит из пяти полей, разделенных пробелами:

 

<Секунды> <Минуты> <Часы> <Дни_месяца> <Месяцы> <Дни_недели>

 

Любое из пяти полей может содержать символ * (звездочка) в качестве значения. Это означает полный диапазон возможных значений. Например, каждая минута, каждый час и т. д. Пользователи могут также использовать в первых четырех полях "нестандартный" символ - ?. См. его описание ниже.

 

Любое из полей может содержать список значений, разделенных запятыми (например, 1,3,7) или интервал (поддиапазон) значений, обозначаемый дефисом (например, 1-5).

 

После звездочки (*) или интервала можно с помощью символа / указать шаг значений. Например, 0-23/2 может использоваться в поле "Часы" для указания того, что действие должно происходить каждые два часа (альтернатива из старого варианта - 0,2,4,6,8,10,12,14,16,18,20,22). Значение */4 в поле "Минуты" означает, что действие должно происходить каждые четыре минуты. 1-30/3 - это то же, что и 1,4,7,10,13,16,19,22,25,28.

 

В полях "Месяцы" и "Дни недели" можно вместо числовых значений использовать сокращенные до трех букв названия месяцев (Jan, Feb, ... , Dec) и дней недели (Mon, Tue, ... , Sun)

 

Примеры

 

Замечание: во всех примерах параметр <Секунды> опущен и подразумевается равным нулю.

 

Формат

Значение

* * * * *

каждую минуту

59 23 31 12 5

за минуту до конца года, если последний день года - пятница

59 23 31 Dec Fri

за минуту до конца года, если последний день года - пятница (еще один вариант записи)

45 17 7 6 *

каждый год 7-го июня в 17:45

0,15,30,45 0,6,12,18 1,15,31 * 1-5 *

00:00, 00:15, 00:30, 00:45, 06:00, 06:15, 06:30, 06:45, 12:00, 12:15, 12:30, 12:45, 18:00, 18:15, 18:30, 18:45, если сейчас 1-е, 15-е или 31-е число любого месяца и только по рабочим дням недели

*/15 */6 1,15,31 * 1-5

00:00, 00:15, 00:30, 00:45, 06:00, 06:15, 06:30, 06:45, 12:00, 12:15, 12:30, 12:45, 18:00, 18:15, 18:30, 18:45, если сейчас 1-е, 15-е или 31-е число любого месяца и только по рабочим дням недели (еще один вариант записи)

0 12 * * 1-5 (0 12 * * Mon-Fri)

в полдень по рабочим дням

* * * 1,3,5,7,9,11 *

каждую минуту в январе, марте, мае, июле, сентябре и ноябре

1,2,3,5,20-25,30-35,59 23 31 12 *

в последний день года в 23:01, 23:02, 23:03, 23:05, 23:20, 23:21, 23:22, 23:23, 23:24, 23:25, 23:30, 23:31, 23:32, 23:33, 23:34, 23:35, 23:59

0 9 1-7 * 1

первый понедельник каждого месяца, в 9 утра

0 0 1 * *

в полночь, первого числа, каждый месяц

* 0-11 * *

каждую минуту до полудня

* * * 1,2,3 *

каждую минуту в январе, феврале и марте

* * * Jan,Feb,Mar *

каждую минуту в январе, феврале и марте

0 0 * * *

каждый день в полночь

0 0 * * 3

каждую среду в полночь

 

Пользователь может использовать в первых четырех полях cron-формата нестандартный символ "?". Он означает время старта, т. е. при обработке поля знак вопроса будет заменен на время старта: минуты - для поля минут, час для поля часов, день месяца для поля дней месяца и месяц для поля месяца.

 

Например, если написать:

 

? ? * * *

 

то задача сработает в момент старта и продолжит срабатывать ежедневно в это же самое время (если, конечно, пользователь не перезагрузит программу снова) - знаки вопроса "заменятся" на время старта программы. Если программа стартовала, например, в 8:25, то знаки вопросов заменятся так:

 

25 8 * * * *

 

Вот еще несколько примеров:

 

? ? ? ? * - запустится _только_ при старте;
? * * * * - запустится при старте (например, в 10:15) и продолжит запускаться ровно через один час: в 11:15, 12:15, 13:15 и т.д.;
* ? * * * - будет запускаться ежеминутно, в час старта;
*/5 ? * * * -  на следующий день (если крон не перезапускался) в этот же час каждую минуту и т. д. будет запускаться ежедневно, раз в пять минут, в час старта.

Copyright © 1999-2017, AGG Software.
All rights reserved.