ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
контакт-центра
 онтакт - центр как канал продаж и маркетинговой коммуникации ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопастность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

7 минут чтени€

Cron - это демон планировани€, который выполн€ет задачи с заданными интервалами. Ёти задачи называютс€ задани€ми cron и в основном используютс€ дл€ автоматизации обслуживани€ или администрировани€ системы.

Cron

Ќапример, вы можете установить задание cron дл€ автоматизации повтор€ющихс€ задач, таких как резервное копирование баз данных или данных, обновление системы последними обновлени€ми безопасности, проверка использовани€ дискового пространства, отправка электронных писем, перезагрузка сервера и так далее. ¬ некоторых приложени€х, таких как Drupal или Magento, дл€ выполнени€ определенных задач требуютс€ задани€ cron.

«адани€ cron могут быть запланированы по минуте, часу, дню мес€ца, мес€цу, дню недели или любой их комбинации.


„то такое файл Crontab

Crontab (таблица cron) представл€ет собой текстовый файл, который определ€ет расписание заданий cron. —уществует два типа файлов crontab. ќбщесистемные файлы crontab и отдельные пользовательские файлы crontab.

‘айлы crontab пользователей именуютс€ в соответствии с именем пользовател€, и их расположение зависит от операционной системы. ¬ дистрибутивах на основе Red Hat, таких как CentOS, файлы crontab хран€тс€ в каталоге /var/spool/cron, а файлы Debian и Ubuntu хран€тс€ в каталоге /var/spool/cron/crontabs.

’от€ вы можете редактировать пользовательские файлы crontab вручную, рекомендуетс€ использовать команду crontab.

/etc/crontab и файлы в каталоге /etc/cron.d €вл€ютс€ общесистемными файлами crontab, которые могут редактировать только системные администраторы.

¬ большинстве дистрибутивов Linux вы также можете помещать скрипты в каталоги /etc/cron.{hourly,daily,weekly,monthly}, и скрипты будут выполн€тьс€ каждый час/день/неделю/мес€ц.

—интаксис Crontab и операторы

 ажда€ строка в пользовательском файле crontab содержит шесть полей, разделенных пробелом, за которым следует команда дл€ запуска.

* * * * * command(s)
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

ѕервые п€ть полей могут содержать одно или несколько значений, разделенных зап€той или диапазон значений, разделенных дефисом.

  • * - оператор звездочки означает любое значение или всегда. ≈сли в поле Ђ„асї имеетс€ символ звездочки, это означает, что задание будет выполн€тьс€ каждый час.
  • , - оператор зап€той позвол€ет указать список значений дл€ повторени€. Ќапример, если у вас есть 1,3,5 в поле „ас, задание будет выполн€тьс€ в 1, 3 и 5 часов утра.
  • - - оператор дефиса позвол€ет указать диапазон значений. ≈сли в поле Ђƒень неделиї указано значение 1Ц5, задание будет выполн€тьс€ каждый рабочий день (с понедельника по п€тницу).
  • / - оператор косой черты позвол€ет указать значени€, которые будут повтор€тьс€ в течение определенного интервала между ними. Ќапример, если в поле Ђ„асї указано */4, это означает, что действие будет выполн€тьс€ каждые четыре часа. Ёто то же самое, что указание 0,4,8,12,16,20. ¬место звездочки перед оператором косой черты можно также использовать диапазон значений, 1-30/10 означает то же, что и 1,11,21.

ќбщесистемные файлы Crontab

—интаксис общесистемных файлов crontab немного отличаетс€ от пользовательских crontabs. ќн содержит дополнительное об€зательное поле пользовател€, которое указывает, какой пользователь будет запускать задание cron.

* * * * *  command(s)

ѕредопределенные макросы

—уществует несколько специальных макросов расписани€ Cron, используемых дл€ определени€ общих интервалов. ¬ы можете использовать эти €рлыки вместо указани€ даты в п€ть столбцов.

  • @yearly (или @annually) - запускать задание один раз в год в полночь (12:00) 1 €нвар€. Ёквивалент 0 0 1 1 *.
  • @monthly - запускать заданное задание один раз в мес€ц в полночь первого дн€ мес€ца. Ёквивалент 0 0 1 * *.
  • @weekly - запускать задание раз в неделю в полночь воскресень€. Ёквивалент 0 0 * * 0.
  • @daily - запускать задание один раз в день в полночь. Ёквивалент 0 0 * * *.
  • @hourly - запускать заданную задачу один раз в час в начале часа. Ёквивалент 0 * * * *.
  • @reboot - «апустить указанное задание при запуске системы (врем€ загрузки).

 оманда Crontab

 оманда crontab позвол€ет установить или открыть файл crontab дл€ редактировани€. ¬ы можете использовать команду crontab дл€ просмотра, добавлени€, удалени€ или изменени€ заданий cron, использу€ следующие параметры:

  • crontab -e - отредактировать файл crontab или создать его, если он еще не существует.
  • crontab -l - ѕоказать содержимое файла crontab.
  • crontab -r - удалить текущий файл crontab.
  • crontab -i - ”далить текущий файл crontab с запросом перед удалением.
  • crontab -u - »зменить другой файл crontab. “ребуютс€ права системного администратора.

 оманда crontab открывает файл crontab с помощью редактора, указанного в переменных окружени€ VISUAL или EDITOR.

crontab

ѕеременные Crontab

ƒемон cron автоматически устанавливает несколько переменных окружени€.

  • ѕуть по умолчанию установлен в PATH=/usr/bin:/bin. ≈сли вызываема€ вами команда присутствует в указанном пути cron, вы можете использовать абсолютный путь к команде или изменить переменную cron $PATH. ¬ы не можете не€вно добавить :$PATH, как если бы вы использовали обычный скрипт.
  • ќболочка по умолчанию установлена в /bin/sh. ¬ы можете установить другую оболочку, изменив переменную SHELL.
  • Cron вызывает команду из домашнего каталога пользовател€. ѕеременна€ HOME может быть переопределена настройками в crontab.
  • ”ведомление по электронной почте отправл€етс€ владельцу crontab. „тобы перезаписать поведение по умолчанию, вы можете использовать переменную среды MAILTO со списком (через зап€тую) всех адресов электронной почты, которые вы хотите получать по электронной почте. ≈сли MAILTO определено, но пусто (MAILTO = ""), письмо не отправл€етс€.

ќграничени€ Crontab

—истемные администраторы могут контролировать, какие пользователи имеют доступ к команде crontab, использу€ файлы /etc/cron.deny и /etc/cron.allow. ‘айлы состо€т из списка имен пользователей, по одному имени пользовател€ в строке.

ѕо умолчанию только файл /etc/cron.deny существует и €вл€етс€ пустым, что означает, что все пользователи могут использовать команду crontab. ≈сли вы хотите запретить доступ к командам crontab конкретному пользователю, добавьте им€ пользовател€ в этот файл.

≈сли файл /etc/cron.allow существует, только пользователи, перечисленные в этом файле, могут использовать команду crontab. ≈сли ни один файл не существует, только пользователи с правами администратора могут использовать команду crontab.


ѕримеры Cron заданий

Ќиже приведены некоторые примеры заданий cron, которые покажут вам, как запланировать выполнение задачи на разные периоды времени.

  • «апускать команду в 15:00 каждый день с понедельника по п€тницу:
    0 15 * * 1-5 command
    
  • «апускать скрипт каждые 5 минут и перенаправл€ть стандартный вывод на dev null, на указанный адрес электронной почты будет отправлена только стандартна€ ошибка:
    MAILTO=email@example.com
    */5 * * * * /path/to/script.sh > /dev/null
    
  • ¬ыполн€ть две команды каждый понедельник в 3 часа дн€ (используйте оператор && между командами):
    0 15 * * Mon command1 && command2
    
  • «апускать PHP-скрипт каждые 2 минуты и записывать результат в файл:
    */2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log
    
  • «апускать сценарий каждый день, каждый час, каждый час, с 8:00 до 16:00:
    00 08-16 * * * /path/to/script.sh
    
  • «апускать сценарий в первый понедельник каждого мес€ца в 7 часов утра.
    0 7 1-7 * 1 /path/to/script.sh
    
  • «апускать сценарий в 21:15, 1 и 15 числа каждого мес€ца:
    15 9 1,15 * * /path/to/script.sh
    
  • ”становить пользовательские переменные HOME, PATH, SHELL и MAILTO и запускать команду каждую минуту.
    HOME=/opt
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    SHELL=/usr/bin/zsh
    MAILTO=email@example.com
    
    */1 * * * * command
    

ѕолезна ли ¬ам эта стать€?


Ёти статьи могут быть вам интересны: