Руководство по выражениям Cron

Руководство по выражениям Cron

1. обзор

Проще говоря, cron - это базовая утилита, доступная в системах на основе Unix. Это позволяет пользователям планировать выполнение задач периодически на указанную дату / время. И, естественно, это отличный инструмент для автоматизации многих процессов, которые в противном случае потребовали бы вмешательства человека.

Cron запускается как процесс-демон - это означает, что его нужно запускать только один раз, и он будет работать в фоновом режиме. В этом процессеcrontab используется для чтения записей расписаний и запуска задач.

Со временемthe cron expression format became widely adopted и может часто использоваться во многих других программах и библиотеках.

Дальнейшее чтение:

Введение в кварц

Узнайте, как планировать работу с помощью Quartz API.

Read more

@ Запланированная аннотация весной

Как использовать аннотацию @Scheduled в Spring для запуска задач после фиксированной задержки, с фиксированной скоростью или в соответствии с выражением cron.

Read more

2. Работа сCrontab

Расписаниеcron - это простой текстовый файл, расположенный в папке/var/spool/cron/crontabs в системах Linux. We cannot edit the crontab files directly; нам нужно получить к нему доступ с помощью командыcrontab.

Например, чтобы открыть файлcrontab, вам нужно запустить эту команду:

crontab -e

Каждая строка вcrontab - это запись с выражением и командой для запуска:

* * * * * * /usr/local/ispconfig/server/server.sh

Эта запись добавляется для запуска упомянутого скрипта каждую секунду.

3. Выражение Cron

Давайте разберемся с выражениемcron; он состоит из шести полей:

       

Из них поле<year> является необязательным.

3.1. Специальные символы в выражении

  • * (all) - используется для указания, что событие должно происходить для каждой единицы времени. Например,“*” в поле <minute> - означает «за каждую минуту»

  • ? (any) - используется в полях <day-of-month> и <day-of -week> для обозначения произвольного значения - значением поля пренебречь. Например, если мы хотим запускать скрипт «5-го числа каждого месяца» независимо от того, какой день недели приходится на эту дату, мы указываем «?» в поле <day-of-week>.

  • – (range) - используется для определения диапазона значений. Например, «10-11» в поле<hour> означает «10-е и 11-е часы».

  • , (values) - используется для указания нескольких значений. Например, «MON, WED, FRI” в поле <day-of-week> означает дни« понедельник, среда и пятница ».

  • / (increments) - используется для указания инкрементальных значений. Например,“5/15” в поле <minute> означает «5, 20, 35 и 50 минут часа».

  • L (last) - имеет разное значение при использовании в разных областях. Например, если он указан в поле <day-of-month>, то это означает последний день месяца, т.е. «31 января» и т. Д. По календарному месяцу. Его можно использовать со значением смещения, например «L-3», которое обозначает «с третьего по последний день календарного месяца». В <day-of-week> он указывает «последний день недели». Его также можно использовать с другим значением в <day-of-week>, например «6L», что означает «прошлую пятницу».

  • W (weekday) - используется для указания дня недели (с понедельника по пятницу), ближайшего к данному дню месяца. Например, если мы укажем «10W» в поле <day-of-month>, то это будет означать «день недели около 10-го числа этого месяца». Таким образом, если «10-е» - суббота, то задание будет запущено «9-го», а если «10-е» - воскресенье, то оно сработает «11-го». Если вы укажете «1W» в <day-of-month> и если «1st» - суббота, то задание будет запущено в «3rd», то есть в понедельник, и не вернется к предыдущему месяцу.

  • # - используется для указания «N-го» появления дня недели месяца, например, «3-я пятница месяца» может быть обозначена как «6#3»

3.2. Примеры выражений Cron

Давайте посмотрим на несколько примеров выраженияcron с использованием комбинаций полей и специальных символов:

В 12:00 (полдень) каждый день в течение 2017 года:

0 0 12 * * ? 2017

Каждые 5 минут, начиная с 13:00 и заканчивая 13:55 и затем с 18:00 до 18:55, каждый день:

0 0/5 13,18 * * ?

Каждую минуту с 13:00 до 13:05, каждый день:

0 0-5 13 * * ?

В 13:15 и 13:45 каждый вторник в июне:

0 15,45 13 ? 6 Tue

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

0 30 9 ? * MON-FRI

В 9:30 15 числа каждого месяца:

0 30 9 15 * ?

В 18:00 в последний день каждого месяца:

0 0 18 L * ?

В 18:00 с 3-го по последний день каждого месяца:

0 0 18 L-3 * ?

В 10:30 в последний четверг каждого месяца:

0 30 10 ? * 5L

В 18:00 в последнюю пятницу каждого месяца в 2015, 2016 и 2017 годах:

0 0 18 ? * 6L 2015-2017

В 10 часов утра третьего понедельника каждого месяца:

0 0 10 ? * 2#3

В 12 часов ночи в полночь каждого дня в течение пяти дней, начиная с 10-го числа месяца:

0 0 0 10/5 * ?

4. Специальные строки Cron

В дополнение к полям, указанным в выражении cron, также поддерживаются некоторые специальные предопределенные значения, которые можно использовать вместо полей:

  • @reboot - запускать один раз при запуске

  • @yearly или@annualy - запускать один раз в год

  • @monthly - запускать раз в месяц

  • @weekly - запускать раз в неделю

  • @daily или@midnight - запускать один раз в день

  • @hourly - запускать ежечасно

5. Заключение

В этой быстрой статье мы рассмотрели заданияcron иcrontab.

Мы также видели несколько примеров выражений, которые вы можете использовать в своей повседневной работе или просто делать выводы из других выражений.