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