«1. Обзор

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

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

Со временем формат выражения cron получил широкое распространение, и многие другие программы и библиотеки используют его.

2. Работа с Crontab

Расписание cron — это простой текстовый файл, расположенный в /var/spool/cron/crontabs в системах Linux. Мы не можем редактировать файлы crontab напрямую, поэтому нам нужно получить к ним доступ с помощью команды crontab.

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

crontab -e

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

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

Эта запись запускает указанный скрипт каждый раз единая минута.

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

Давайте разберемся с выражением cron.

Он состоит из пяти полей:

<minute> <hour> <day-of-month> <month> <day-of-week> <command>

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

    * (все) указывает, что событие должно происходить в каждую единицу времени. Например, «*» в поле \u003cminute\u003e означает «за каждую минуту». (любой) используется в полях \u003cдень-месяца\u003e и \u003cдень-недели\u003e для обозначения произвольного значения и, таким образом, игнорирует значение поля. Например, если мы хотим запускать сценарий «5 числа каждого месяца» независимо от того, какой день недели приходится на эту дату, мы указываем «?» в поле \u003cday-of-week\u003e. – (диапазон) определяет диапазон значений. Например, «10-11» в поле \u003chour\u003e означает «10-е и 11-е часы». , (values) указывает несколько значений. Например, «ПН, СРЕДА, ПТ» в поле \u003cday-of-week\u003e означает дни «понедельник, среда и пятница». / (приращение) указывает возрастающие значения. Например, «5/15» в поле \u003cminute\u003e означает «5, 20, 35 и 50 минут часа». L (последний) имеет разные значения при использовании в разных полях. Например, если он применяется в поле \u003cдень-месяца\u003e, это означает последний день месяца, т. е. «31 января» и так далее в соответствии с календарным месяцем. Его можно использовать со значением смещения, например «L-3», которое обозначает «с третьего по последний день календарного месяца». В \u003cday-of-week\u003e он указывает «последний день месяца». в неделю». Его также можно использовать с другим значением в \u003cday-of-week\u003e, например «6L», что обозначает «последнюю пятницу». W (день недели) определяет день недели (с понедельника по пятницу) ближайший к данному дню месяца. Например, если мы укажем «10W» в поле \u003cday-of-month\u003e, это означает «будний день ближе к 10-му числу этого месяца». Таким образом, если «10th» — это суббота, задание будет срабатывает «9-го числа», а если «10-е» — это воскресенье, оно сработает «11-го числа». Если мы укажем «1W» в \u003cдень-месяца\u003e и если «1-е» В субботу задание будет запущено «3-го числа», то есть в понедельник, и оно не вернется к предыдущему месяцу. # указывает «N-й» день недели месяца, например, «третья пятница месяца» может быть указан как «6#3».

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

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

At 12:00 p.m. (полдень) каждый день:

0 12 * * ?

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

0/5 13,18 * * ?

Каждую минуту, начиная с 13:00. и заканчивается в 13:05, каждый день:

0-5 13 * * ?

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

15,45 13 ? 6 Tue

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

30 9 ? * MON-FRI

В 9:30 утра 15-го числа каждого месяца: ~ ~~

30 9 15 * ?

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

0 18 L * ?

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

0 18 L-3 * ?

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

30 10 ? * 5L

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

0 10 ? * 2#3

~ ~~»

0 0 10/5 * ?

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

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

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

@reboot — запускать один раз при запуске @yearly или @annualy — запускать раз в год @monthly — запускать раз в месяц @weekly — запускать раз в неделю @daily или @midnight — запускать раз в день @hourly — запускать ежечасно

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

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