Перейти к основному содержимому
Версия: 7.0

Основные команды Cron

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

crontab -e

Результат будет выглядеть следующим образом:

Редактирование crontab

Скорее всего откроется редактор vi. Так как этот редактор довольно часто используется при работе с Cron, мы рекомендуем ознакомиться с основными командами vi.

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

Редактирование crontab другого пользователя

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

crontab -r

Команда ниже делает аналогична команде -r, однако она просит подтвердить действие перед удалением файла crontab:

crontab -i

Если вы хотите отобразить содержимое открытого файла crontab, введите в терминале следующую команду:

crontab -l

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

Нет crontab-файлов

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

crontab -u username -l
Просмотр crontab другого пользователя

Синтаксис Cron

Crontab-файл состоит из двух частей: расписания и команды. Команда выглядит следующим образом:

* * * * * /bin/sh backup.sh

Например,

  • * * * * /bin/sh backup.sh запускает резервное копирование каждую минуту.
  • 30 18 * * * rm /home/sydtesting/tmp/* означает, что файлы tmp будут удаляться из /home/sydtesting/tmp каждый день в 18:30.

Файл Crontab имеет пять полей. Каждое поле представлено звёздочкой и определяет дату и время задачи, которая должна выполняться регулярно.

Поля 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, как показано в примере:

0 5 * * * /root/backup.sh >/dev/null 2>&1

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

MAILTO="mojo_imia@hostinger.com"
0 3 * * * /root/backup.sh >/dev/null 2>&1

Больше примеров синтаксиса:

ВыражениеЗначение
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Выполнить команду в первый день каждого месяца.