Cron используется для планирования задач, которые будут выполняться периодически. Вы можете настроить команды или сценарии, которые будут повторяться в заданное время. Cron — один из самых полезных инструментов в Linux или UNIX. Служба(daemon) cron работает в фоновом режиме и постоянно проверяет файл /etc/crontab и каталог /etc/cron.*/. Он также проверяет каталог /var/spool/cron/.
Crontab — это команда, используемая для установки, удаления или вывода файла конфигурации cron, используемого для управления демоном cron. Каждый пользователь может иметь свой собственный файл задач crontab, и хотя эти файлы хранятся в /var/spool/cron/crontabs, они не предназначены для прямого редактирования. Вам нужно использовать команду crontab для редактирования или настройки ваших собственных заданий cron.
Типы файлов конфигурации CRON
Существуют различные типы файлов конфигурации:
Системный Сrontab: Обычно используется системными службами и критическими заданиями, требующими привилегий root доступа. Шестое поле (см. ниже описание поля) — это имя пользователя которое по умолчанию присвоено команде. Это дает системе возможность запускать команды от разных пользователей.
Пользовательский crontab: Пользователь может установить свои собственные задания cron, используя команду crontab. Шестое поле — это команда для запуска, и все команды будут выполняться от пользователя, который задал их в своем собственном crontab.
Установка, создание и редактирование заданий cron
Чтобы отредактировать файл crontab, введите следующую команду в командной строке оболочки Unix / Linux:
1 |
$ crontab -e |
Синтаксис crontab
Синтаксис:
1 |
1 2 3 4 5 /path/to/command arg1 arg2 |
ИЛИ
1 |
1 2 3 4 5 /root/ntp_sync.sh |
Где цифры обозначают:
1: Минуты (0-59)
2: Часы (0-23)
3: День (0-31)
4: Месяц (0-12 [12 == Декабрь])
5: День недели (0-7 [7 или 0 == sunday])
/path/to/command — имя скрипта или команды для выполнения по расписанию
Легко запоминаемый формат:
1 2 3 4 5 6 7 8 |
* * * * * Команда, которая будет выполнена - - - - - | | | | | | | | | - День недели (0 - 7) (воскресенье = 0 или 7) | | | --- Месяц (1 - 12) | | --- День месяца (1 - 31) | ---- Час (0 - 23) ----- Минута (0 - 59) |
Пример
1 2 3 4 5 6 7 8 |
# выполнять скрипт backupscript каждые 5 минут # */5 * * * * /root/backupscript.sh # выполнять скрипт backupscript каждый день в час ночи # 0 1 * * * /root/backupscript.sh # выполнять скрипт каждый месяц первого числа в три часа ночи пятнадцать минут # 15 3 1 * * /root/backupscript.sh |
Использование операторов
Оператор позволяет указать несколько значений в поле. Существует четыре оператора:
Звездочка (*): этот оператор задает все возможные значения для поля. Например, звездочка в поле «Часы» будет эквивалентна каждому часу, а звездочка в поле месяца будет эквивалентна каждому месяцу и т.д.
Запятая (,): Этот оператор задает список значений, например: «1,5,10,15,20,25».
Тире (-): Этот оператор задает диапазон значений, например: «5-15» дней, что эквивалентно набору «5,6,7,8,9 … …, 13,14,15», при использования оператора «Запятая».
Слеш (/): этот оператор задает значение шага, например: «0-23 /» можно использовать в поле часов, чтобы указывать выполнение команды каждый час. Шаги также разрешены после звездочки, поэтому, если вы хотите выполнять что-то каждые два часа, просто используйте «*/2».
Вместо первых пяти полей вы можете использовать любую из восьми специальных строк. Это не только сэкономит ваше время, но и улучшит читаемость.
@reboot — Запускается только один раз при запуске.
@yearly — Запускается раз в год, «0 0 1 1 *».
@annually — Такое же, как у @yearly
@monthly — Запускается раз в месяц, «0 0 1 * *».
@weekly — Выполняется раз в неделю, «0 0 * * 0».
@daily — Выполняется один раз в день, «0 0 * * *».
@midnight — Такое же, как у @daily.
@hourly — Запускается один раз в час, «0 * * * *».
Пример:
1 2 |
# Запуск команды ntpdate каждый час # @hourly /path/to/ntpdate |