Основные сведения о Cron
Если вы хотите изменить crontab-файл (файл содержащий инструкции по выполнению запланированных заданий), то есть создать и настроить своё первое cron job, введите в терминале следующую команду.
Так будет выглядеть результат.
Скорее всего вы попадёте в редактор vi. Так как этот редактор довольно часто используется при работе с Cron, лучше ознакомится с основными командами vi. Так вы будете чувствовать себя более уверенно.
Если вы хотите изменить crontab-файл другого пользователя, используйте команду crontab -u username -e. Имейте в виду, что вы можете редактировать чужие файлы только как суперпользователь, то есть вам нужно ввести sudo su перед командой.
Если вы хотите удалить текущий файл crontab текущего пользователя, введите следующую команду.
Команда ниже делает то же самое, что и -r, однако она просит подтвердить действие, прежде чем удалить crontab.
Если вы хотите отобразить содержимое файла crontab, в который вы зашли, введите в терминале следующую команду.
Ещё одна операция этой команды позволяет посмотреть есть ли у вас crontab-файлы. Просто введите crontab -l. Если у вас нет созданных файлов, вывод покажет следующий результат.
Если вы хотите просмотреть списки crontab-файлов других пользователей, просто введите crontab -u username -l как суперпользователь.
Теперь, когда вы ознакомились с базовыми операциями, пора рассмотреть основной синтаксис Cron.
По сути, crontab-файл состоит из двух частей: таймера расписания и команды. Вот как записывается команда.
- * * * * /bin/sh backup.sh — cron job значит запуск резервного копирования каждую минуту.
- 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 означает второй понедельник.
- Вопросительный знак (?) — например, чтобы выбрать определённый день для запуска скрипта, нам нужно указать либо число месяца, либо номер дня, мы не можем указывать оба значения одновременно. Вопросительный знак даёт возможность оставить одно значение пустым.
Теперь, когда вы ознакомились с синтаксисом Cron, мы дадим больше примеров, которые помогут вам лучше понять изложенные выше правила.
Прежде чем двигаться дальше, обратите внимание, что вывод команды будет автоматически отправлен на вашу локальную электронную почту. Если вы не хотите получать эти письма, просто добавьте к синтаксису >/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 | Выполнить команду в первый день каждого месяца. |