Использование CRON, CRON задания с примерами

CRON — часть ядра операционной системы позволяющая выполнять задания по определенному расписанию. В качестве задания используется какая-то консольная команда или скрипт.

Посмотреть список заданий можно выполнив

crontab -l

 

Ключ -l здесь — list

Выполняется от имени того пользователя от имени которого запускается скрипт или выполняется команда, добавленная в CRON

crontab -e

 

Ключ -e — edit

 

Использование CRON — пример

Добавим задание согласно которому каждые десять минут будет удаляться абстрактный каталог с логами

От имени системного пользователя root выполняем:

crontab -e

 

Открывается /etc/crontab в одном из текстовых редакторов (nano, vi, mcedit) — при первом вызове crontab -e редактор нужно выбрать

Создаем задание:

10 * * * * cd /var/www/web/sites/example.com && rm -rf logs

 

10 * * * * — выполнять каждые 10 минут

cd /var/www/web/sites/example.com && rm -rf logs — непосредственно две простейшие команды разделенные &&, что означает, что вторая команда будет выполнена только если успешно выполнится первая

Использование CRON

Задание будет выполняться в соответствии с установленным расписанием — читать его стоит как «выполнять задание каждые …». Звездочка фактически означает «каждый/ую». Т.е. при указании * * * * * задание будет выполняться каждую минуту и чаще по CRON запускать какой-либо скрипт не получится.

 

Поле под minute может принимать значения от 1 до 60 (или * как для всех других), hour — от 1 до 12, day of month — от 1 до 31, month — соответственно от 1 до 12 и day of week — от 1 до 7.

 

В последнем примере на картинке скрипт или команда, помещенные в задание будут выполняться в 2 часа 5 минут каждый вторник.

 

Чаще всего для небольшого сервера использование CRON этим ограничивается, однако существуют и другие возможности.

 

 

Все файлы, имеющие отношение к CRON можно вычислить выполнив в консоли whereis cron

 

whereis cron

cron: /usr/sbin/cron /etc/cron.daily /etc/cron.weekly /etc/cron.hourly /etc/cron.d /etc/cron.monthly /usr/share/man/man8/cron.8.gz

 

Пять из файлов в выводе могут оказаться полезны

 

/etc/cron.hourly 

Ежечасные задания, выполняющиеся по расписанию

 

/etc/cron.daily

В этот файл прописываются задания которые должны выполняться один раз в день

 

/etc/cron.weekly

Здесь задания которые должны выполняться один раз в неделю

 

/etc/cron.monthly

Задания, которые буду выполняться один раз в месяц

 

/etc/cron.d

Если необходимо на одном сервере запускать множество списков CRON заданий от имени разных пользователей — файлы с этими заданиями удобно поместить в /etc/cron.d

 

echo «10 * * * * user  cd /var/www/web/sites/example.com && rm -rf logs» > /home/user/deletelogs.sh

 

В конец каждого файла с заданиями дописываем пустую строку — такой синтаксис обязателен.

cat /home/user/deletelogs.sh > /etc/cron.d/deletelogs

 

Задания CRON таким образом удобно перемещать между серверами и делать это можно скриптом — необходимости прописывать их вручную для каждого пользователя в системе нет