Когда требуется автоматизация на сервере, без 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.
 
									 
									




