Crontab Примеры: Запуск Cron Заданий в Linux

В Linux мы можем настраивать выполнение регулярной задачи, также известной как cron задание, с помощью сервиса cron (crond).

Сервис cron (crond), читает crontab (таблицы cron-а) и выполняет запланированные задания.

В данной статье я покажу формат crontab и объясню как планировать запуск команд или скриптов в Linux.

Вы также найдете здесь такие распространенные примеры расписаний в crontab, как запуск команды или скрипта каждую минуту, каждые 5 минут, каждый час, каждый день и многие другие.

Первым делом необходимо убедиться, что сервис cron (crond) запущен.

Узнать запущен ли сервис cron в Ubuntu:

systemctl status cron.service

— или —

service cron status

Узнать запущен ли сервис crond в CentOS:

systemctl status crond.service

— или —

service crond status

Также необходимо убедиться в том, что сервис cron (crond) будет запущен при старте системы.

Дельный Совет: Не знаете как добавит сервис в автозагрузку в Ubuntu или CentOS? Это легко! Читать далее →

Как только сервис cron (crond) запущен и стоит в автозагрузке — вы можете запланировать cron задание.

Настройка Crontab

Выполните следующую команду чтобы открыть crontab текущего пользователя:

$ crontab -e

Открыть crontab пользователя Alice:

$ crontab -u alice -e

Просмотреть содержимое crontab текущего пользователя и пользователя Alice:

$ crontab -l
$ crontab -u alice -l

Полезная Информация: По умолчанию, пользовательские задания для планировщика cron хранятся в директории /var/spool/cron/.

Формат Планирования Заданий в Сrontab

Каждое запланированное задание описывается одной строкой и определяет время начала выполнения задания и само cron задание (команда или скрипт) которое будет выполнено.

Чтобы задать время, можно использовать конкретное значение минуты, часа, дня месяца, месяца и дня недели.

Вместо конкретных значений можно использовать символ *, который буде означать ВСЕ значения или КАЖДОЕ из значений.

Схема для лучшего понимания формата crontab:

.---------------- минута (0 - 59)
| .-------------- час (0 - 23)
| | .------------ день месяца (1 - 31)
| | | .---------- месяц (1 - 12) ИЛИ jan,feb,mar ...
| | | | .-------- день недели (0 - 6) (Воскресенье=0 или 7) ИЛИ sun,mon,tue ...
| | | | |
* * * * * команда для выполнения

Временная метка может быть целым значением, несколькими значениями, диапазоном, дробью или дробным диапазоном.

Примеры временных меток для колонки час:

Значение Тип Описание
9 Целое значение Выполнять в 9am
6,7,10 Несколько значений Выполнять в 6, 7 и 10am
6-9 Диапазон Выполнять каждый час между 6-9 AM (включительно)
*/2 Дробь Выполнять каждый 2-ой час, т.е. 0 (полночь), 2am, 4am, 6am, и т.д.
3-12/3 Дробный диапазоном Выполнять каждый 3-ий час между 3am и 12pm, т.е. 3am, 6am, 9am, 12pm

Дельный Совет: Хотите стать DevOps инженером? Тогда вы обязаны знать Git! Это статья поможет реально быстро освоить основы Git! Читать далее →

Существует насколько предопределенных значений, которыми можно заменять время выполнения задания:

Значение Описание Эквивалент
@reboot Выполнять при загрузке операционной системы
@yearly Выполнять ежегодно в полночь 1-го января 0 0 1 1 *
@annually Выполнять ежегодно в полночь 1-го января 0 0 1 1 *
@monthly Выполнять ежемесячно в полночь 1-го числа 0 0 1 * *
@weekly Выполнять в полночь каждый понедельник 0 0 * * 0
@daily Выполнять ежедневно в полночь 0 0 * * *
@midnight Выполнять ежедневно в полночь 0 0 * * *
@hourly Выполнять в начале каждого часа 0 * * * *

Примеры Crontab

В конце этого поста я бы хотел представить несколько полезных примеров расписаний запуска cron заданий.

Я просматриваю эти примера практически каждый раз, когда необходимо добавить в crontab какую-то команду или скрипт.

Эта таблица мне очень помогает и надеюсь поможет вам.

Вот самые распространенные примеры расписаний cron заданий, которые могут быть найдены практически в любом crontab в Linux:

Рассписание Задание
* * * * * echo «Запуск cron задания каждую минуту»
*/5 * * * * echo «Запуск cron задание каждые 5 минут»
*/30 * * * * echo «Запуск cron задания каждые 30 минут»
0 * * * * echo «Запуск cron задания каждый час»
0 */3 * * * echo «Запуск cron задания каждые 3 часа»
0 13 * * * echo «Запуск cron задания каждый день в 13:00»
30 2 * * * echo «Запуск cron задания каждый день в 2:30»
0 0 * * * echo «Выполнять задание каждый день в полночь»
0 0 * * 0 echo «Запуск cron задания каждое Воскресенье»
0 0 * * 1 echo «Запуск cron задания каждый Понедельник»
0 0 1 * * echo «Запуск cron задания в первый день каждого месяца»
0 0 1 1 * echo «Запуск cron задания каждый год первого Января»