Основные сведения о Cron
Если вы хотите изменить Crontab-файл (файл содержащий инструкции по выполнению запланированных заданий), введите в терминале следующую команду:
Результат будет выглядеть следующим образом:

Скорее всего откроется редактор vi. Так как этот редактор довольно часто используется при работе с Cron, мы рекомендуем ознакомиться с основными командами vi.
Если вы хотите изменить crontab-файл другого пользователя, используйте команду crontab -u username -e. Чужие файлы могут редактировать только суперпользователи, поэтому потребуется ввести sudo su перед командой.

Если вы хотите удалить актуальный файл crontab текущего пользователя, введите следующую команду:
Команда ниже делает аналогична команде -r, однако она просит подтвердить действие перед удалением файла crontab:
Если вы хотите отобразить содержимое открытого файла crontab, введите в терминале следующую команду:
Эта команда также может показать, есть ли у вас crontab-файлы. Если созданные файлы отсутствуют, будет показано следующее сообщение:

Для просмотра crontab-файлов других пользователей, введите следующую команду как суперпользователь:

Crontab-файл состоит из двух частей: расписания и команды. Команда выглядит следующим образом:
Например,
- * * * * /bin/sh backup.sh запускает резервное копирование каждую минуту.
- 30 18 * * * rm /home/sydtesting/tmp/* означает, что файлы tmp будут удаляться из /home/sydtesting/tmp каждый день в 18:30.
Файл Crontab имеет пять полей. Каждое поле представлено звёздочкой и определяет дату и время задачи, которая должна выполняться регулярно.

- Минуты — минута часа, в которую будет запущена команда (от 0 до 59).
- Часы — час, когда начнётся выполнение команды (от 0 до 23).
- День месяца — в какой день месяца должна запускаться команда (от 1 до 31).
- Месяц — в какой месяц будет выполняться команда (от 1 до 12).
- День недели — в какой день недели должна выполняться команда (от 0 до 6, 0 — воскресенье).
Определенные символы также имеют значение. Используйте:
- Звёздочку (*) чтобы определить параметры планирования.
- Запятую (,) чтобы указать два или более вариантов времени выполнения команды.
- Дефис (-) чтобы задать диапазон времени выполнения команды.
- Косую черту (/) для создания заданных интервалов времени в определённом диапазоне.
- Last (L) чтобы определить последний день недели в данном месяце. Например, 3L означает последнюю среду.
- Рабочий день (W) чтобы определить ближайший рабочий день недели к заданному времени. Например, 1W означает, что скрипт будет запущен в ближайший рабочий день к первому числу, если 1-ое — Воскресенье, команда будет выполняться в понедельник (2-го).
- Решетку (#) чтобы указать день недели в поле месяца (от 1 до 5). Например, 1#2 означает второй понедельник.
- Вопросительный знак (?) чтобы выбрать определённый день для запуска скрипта. Для правильной работы нужно указать либо число месяца, либо номер дня — мы не можем указывать оба значения одновременно. Этот символ даёт возможность оставить одно значение пустым.
Обратите внимание, что вывод команды автоматически отправляется на локальную электронную почту. Если вы не хотите получать эти письма, добавьте к синтаксису >/dev/null 2>&1, как показано в примере:
Если вы хотите, чтобы вывод приходил на другую почту, вы можете добавить MAILTO, а затем адрес электронной почты. Например:
Больше примеров синтаксиса:
Выражение | Значение |
---|---|
0 0 * * * /bin/sh backup.sh | Выполнять резервное копирование базы данных в полночь один раз в день. |
0 6,18 * * * /bin/sh backup.sh | Выполнять резервное копирование БД два раза в день в 6 утра и 6 вечера. |
0 */6 * * * /scripts/monitor.sh | Проводить мониторинг каждые шесть часов. |
*/10 * * * * /home/user/script.sh | Выполнять cron job для файла сценария, находящегося в домашнем каталоге каждые 10 минут. |
0 * 20 7 * /bin/sh backup.sh | Запускать резервное копирование базы данных каждый час каждого 20 июля. |
0 0 * * 2 * /bin/sh | Запускать резервное копирование БД в полночь каждый вторник. |
* * * 1,2,5 * /script/script.sh | Выполнить команду в январе, феврале и мае. |
10-59/5 5 * * * /home/user/script.sh | Выполнять команду каждые 5 минут в 5 часов утра, начиная с 5:10 утра. |
0 8 1 */3 * /home/user/script.sh | Запускать команду ежеквартально в 1-й день в 8 утра. |
* * * * * /scripts/script.sh; /scripts/scrit2.sh | Чтобы запланировать несколько заданий в одном cron job. |
@reboot /scripts/script.sh | Чтобы выполнять определённую задачу каждый раз при запуске системы. |
0 0 1 * * /home/user/script.sh | Выполнить команду в первый день каждого месяца. |