В работе администратора довольно много рутинных задач, которые необходимо периодически исполнять. Бэкапирование сайта, перевыпуск SSL сертификата, запуск скриптов и т.д. Выполнять каждый раз подобные операции в ручном режиме малоэффективно, а с ростом количества таких задач ручное исполнение увеличит время администрирования в геометрической прогрессии.
Cron — механизм, позволяющий запускать выполнение команд и скриптов по расписанию. Если упрощенно, состоит он из таблицы расписания crontab и утилиты cron, которая читает это расписание и исполняет запланированные работы.
Соответственно, первым делом нужно добавить нашу задачу в таблицу. Пусть у нас есть скрипт, делающий бэкап нашего сайта /usr/local/bin/backup_script.sh Давайте настроим его запуск ежедневно, в 3:45 ночи.
Текущие cron задачи хранятся в файле /var/spool/cron/имя_пользователя в нашем случае для рутового пользователя это /var/spool/cron/root Чтобы добавить новую задачу можно либо отредактировать файл непосредственно, используя текстовый редактор, либо использовать:crontab -e
В открывшемся окне, добавляем следующую строку:45 3 * * * /usr/local/bin/backup_script.sh > /dev/null 2>&1
данная строка состоит из двух частей:45 3 * * *
— расписание/usr/local/bin/backup_script.sh > /dev/null 2>&1
— команда.
Расписание состоит из 5 разделов, слева на право — минута, час, день, месяц, день недели. Звездочка * в любом из временных разделов, означает что задача выполняется для любого значения.
Давайте разберем наше расписание: 45 минута, 3 часа, любой день, месяц и день недели. Соответственно, наш скрипт будет запускаться каждый день недели, каждый месяц и каждый день в 3 часа 45 минут. Если мы захотим запускать скрипт раз в неделю в пятницу, то наше расписание примет вид:45 3 * * 5
Кроме конкретного значения или любого значения, в crontab возможны следующие вариации:10,20
— несколько значений через запятую для одного раздела, задача будет выполнена для каждого значения, если, это например раздел минут, то в 10 и 20 минуту соответственно.10-20
— диапазон значений от и до, задача выполняется для каждого значения из диапазона, например в 10, в 11, в 12 и т.д. в 20 минуту.*/10
— звездочка, деленная на значение, выполнение задачи, например каждые 10 минут.
Со второй частью все еще проще, мы указываем команду или скрипт которые должны быть исполнены в установленное время. В нашем случае это скрипт бэкапа /usr/local/bin/backup_script.sh А так как нам не нужен вывод команды исполняемой cron мы перенаправляем вывод в небытие /dev/null
Проверяем результат, выведем таблицу расписания crontab:
[root@waky ~]# crontab -l
45 3 * * * /usr/local/bin/backup_script.sh > /dev/null 2>&1
Наш скрипт добавлен в расписание.