Планировщик задач Cron

.
Время чтения — 3 мин.
cron

Введение

Cron — это программа, которая выполняет задания в рамках указанного расписания. Такой класс программ обычно называют планировщиками задач.

В качестве задач выступают команды из оболочки операционной системы.

Основные возможности:

Файловая структура

Cron поддерживает множественные места хранения расписаний. Это сделано для того, чтобы:

  1. Каждый пользователь мог работать только со своими задачами.

  2. Разделить выполнение задач тематически. Например, если положить скрипт в каталог /etc/cron.daily, он выполнится 1 раз в сутки.

Главный файл с расписаниями — /etc/crontab.

Тематические каталоги:

В тематические каталоги помещаются готовые скрипты, расписание для скриптов не указывается. Если создать скрипт в каталоге /etc/cron.hourly, то он будет запускаться 1 раз в час.

Если нужно сохранить расписание в отдельном файле, то можно поместить его в каталог /etc/cron.d.

Формат записи

Существует 2 формата записи:

Если значение поля не важно, то достаточно указать знак «*» (звёздочка). В таком случае cron использует предоставленные значения. Но что будет, если указать для всех временных полей «*»? Cron вызовет команду раз в минуту.

В главном конфигурационном файле /etc/crontab добавлены подсказки в виде комментариев:

# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │                                   7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * command to execute

Примеры интервалов

Запускать скрипт для резервного копирования каждый вечер в 23:00 от пользователя backup:
0 23 * * * backup /scripts/backup.sh

Запускать скрипт каждые 15 минут:
*/15 * * * * backup /scripts/fetch.sh

Запускать скрипт только в выходные дни:
*/15 * * * 6-7 backup /scripts/fetch.sh

Запускать скрипт в 5 утра, 1-го числа января и февраля:
5 4 1 1-2 * backup /scripts/fetch.sh


Работа с задачами

Для примера запустим скрипт резервного копирования /home/eugene/scripts/backup.sh каждый день в 23:00.

Как добавить задачу (способ № 1)

Открываем редактор с расписанием для текущего пользователя

crontab -e

и добавляем строчку:

0 23 * * * /home/eugene/scripts/backup.sh

В таком случае имя пользователя указывать не нужно.

Как добавить задачу (способ № 2)

Второй способ — создать файл с расписанием в каталог /etc/cron.d — например, /etc/cron.d/site-backup:

0 23 * * * eugene /home/eugene/scripts/backup.sh

Применяем настройки

Чтобы cron перечитал файлы с расписаниями, необходимо перезапустить его службу:

service crond restart

Как удалить задачу

Это можно сделать как минимум тремя способами:

  1. Удалить файл с заданием.
  2. Удалить строчку из файла.
  3. Закомментировать строчку.
    #0 23 * * * backup /scripts/backup.sh
    

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

service crond restart

Полезные ссылки