Запускать работу cron каждую минуту только в определенные часы?

Как вы выполняете задание cron каждую минуту только в определенные часы? Например:

Он будет проверять каждую минуту только с 11:00 до 12:00, от 4PM до 5PM и от 9PM до 10PM

Мне кажется сложным, я не знаю, с чего начать.

Ответы

Ответ 1

Правильное решение:

* 11,16,21 * * *

Потому что если вы используете предыдущее решение:

0-59 11-12,16-17,21-22 * * * *

Работа начнется в 12:40 или 17:59. Он не находится в диапазоне от 11AM до 12AM, от 4PM до 5PM и от 9PM до 10PM.

UPDATE:

Традиционный (унаследованный от Unix) формат cron состоит из пяти полей, разделенных пробелами:

*    *    *    *    *  command to be executed
┬    ┬    ┬    ┬    ┬
│    │    │    │    │
│    │    │    │    │
│    │    │    │    └───── day of week (0 - 6) (0 is Sunday, or use names)
│    │    │    └────────── month (1 - 12)
│    │    └─────────────── day of month (1 - 31)
│    └──────────────────── hour (0 - 23)
└───────────────────────── min (0 - 59)

nnCron может использовать как традиционную, так и "улучшенную" версию формата cron, которая имеет дополнительное (6-е) поле: Year.

Ответ 2

В соответствии с cron format

<Minute> <Hour> <Day_of_the_Month> <Month_of_the_Year> <Day_of_the_Week> <Year>

* * * * * *
| | | | | | 
| | | | | +-- Year              (range: 1900-3000)
| | | | +---- Day of the Week   (range: 1-7, 1 standing for Monday)
| | | +------ Month of the Year (range: 1-12)
| | +-------- Day of the Month  (range: 1-31)
| +---------- Hour              (range: 0-23)
+------------ Minute            (range: 0-59)

решение должно быть

* 11,16,21 * * * *