Когда требуется автоматизация на сервере, без cron
обойтись сложно. Конечно для начала требуется написать скрипт, который будет выполнять какие-то рутинные действия, а для того, чтобы он запускался регулярно, в определённое время и при этом сам собой, без вмешательства со стороны администратора сервера, — тут на помощь придёт знания о том, как настроить cron
на сервере. По сути cron
— это планировщик в виде системного сервиса, работающего на сервере в фоновом режиме и по настроенным командам в определённое время (раз в час, раз в день, неделю или месяц) запускает то, что указано в этих командах.
Существует несколько конфигурационных файлов cron
, из которых он берет информацию о том когда и что нужно выполнять. Этот сервис открывает файл /etc/crontab
, в котором указаны все нужные данные. В некоторых дистрибутивах linux там прописан запуск утилиты run-parts
, которая запускает нужные скрипты из следующих папок:
/etc/cron.minutely
- каждую минуту;/etc/cron.hourly
- каждый час;/etc/cron.daily
- каждый день;/etc/cron.weekly
- каждую неделю;/etc/cron.monthly
- каждый месяц.
В этих папках находятся скрипты (имя этих скриптов не должно содержать точки), которые нужно запускать с указанным интервалом. В файле crontab
также прописан запуск команды anacron
, которая работает так же как и cron
, только предназначена для задач, которые нужно выполнять раз в заданный период времени, например, раз в день, неделю, месяц, год.
После перезагрузки (или включения после отключения) сервера, процесс cron
запускается автоматически и, для того, чтобы отслеживать какие программы были им запущены, а какие ещё не отработали, дата выполнения задания последний раз записывается в файл /var/spool/anacron
и anacron
проверяет был ли запущен нужный процесс в нужное время, и если нет, то запускает его. Сервис cron
больше рассчитан на выполнение задач в течение дня или с точно расписанным временем и датой.
Команда crontab -l
Команда crontab -l
показывает задачи cron для суперпользователя.
Команда crontab -r
Команда crontab -r
удаляет все существующие задачи суперпользователя.
Команда crontab -e
Команда crontab -e
позволяет редактировать задачи, внесённые в список задач, а также удалять ненужные и дописывать новые.
Синтаксис записи crontab
Выполнив команду crontab -e
, вы откроете на редактирование список имеющихся задач в cron
в текстовом редакторе, используемым в вашей системе по умолчанию. При сохранении данного файла происходит перезапись задач в cron
и задача удаляется, модифицируется или добавляется в список выполнения.
Формат записи в cron
имеет в начале пять цифр. Если вместо цифры стоит *
, то это нужно понимать как "каждая". Т.е. если нужно выполнять каждый день, то в позиции дней должна стоять *
. Дальше это станет понятно на примерах.
После цифр идёт команда, которую нужно выполнить (обычно это скрипты с параметрами).
Итак, формат в общем виде выглядит так:
минута
час
день
месяц
день_недели /путь/к/исполняемой/команде с_парамертами_если_нужно
Например, если нужно выполнить какой-то скрипт по адресу /usr/local/service.sh
- каждую минуту:
-
* * * * * /usr/local/service.sh
-
- каждый час на 45-й минуте:
-
45 * * * * /usr/local/service.sh
-
- каждый день в полночь (в 0 часов 0 минут)
-
0 0 * * * /usr/local/service.sh
-
- каждый месяц 13-го числа (каждого месяца в 14:22)
-
22 14 13 * * /usr/local/service.sh
-
- каждую пятницу в час ночи
-
0 1 * * 4 /usr/local/service.sh
-
- Если нужно запускать с определёнными интервалами:
- интервалы указываются через запятую (в примере ниже - ежедневно в 12:30 и в 12:44):
-
30,44 12 * * * /usr/local/service.sh
-
- или в виде дроби (в примере - каждые 15 минут):
-
*/15 * * * * /usr/local/service.sh
-
- интервалы указываются через запятую (в примере ниже - ежедневно в 12:30 и в 12:44):
- Для некоторых часто используемых наборов есть переменные:
@reboot
- при загрузке, только один раз;@yearly
,@annually
- раз год;@monthly
- раз в месяц;@weekly
- раз в неделю;@daily
,@midnight
- каждый день;@hourly
- каждый час, например:-
@hourly /usr/local/service.sh
-
Логгирование выполнения задач cron
Лог того, как происходит выполнение задач в cron
пишется в /var/log/cron
или в syslog
.
Посмотреть его можно так:
grep CRON /var/log/syslog
На первое время данной информации должно хватить для составления списка выполнения задач в cron
.
Видео-инструкция «Запускаем в cron скрипт, написанный на PHP. Подготовка PHP скрипта к запуску в crontab»
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)