Что такое CRON и как его использовать

Что такое CRON и как его использовать

10:27, 01.02.2022

Содержание статьи
arrow

  • Cron и crontab: что это
  • Принцип использования Cron
  • Принцип работы Cron и crontab через панель управления
  • Принцип работы Cron и crontab через SSH-протокол
  • Первичная настройка Cron
  • Установка ограничений у Cron
  • Дополнительные сведения

Cron – один из самых популярных демонов на Linux, который по сути представляет собой продвинутый планировщик задач. Является важным компонентом всех Linux-подобных систем и применяется администраторами для планировки расписания запуска определенных программ и скриптов в заданное время. Администратор может устанавливать периодичность запуска скриптов, регулировать продолжительность их работы и т.д. В этой статье мы постараемся максимально подробно рассказать о принципах использования cron через панель управления и SSH-протокол, поделимся советами по первичной настройке программы и проведем небольшой экскурс по синтаксису cron.

Cron и crontab: что это

Два фундаментальных компонента, принципы работы которых необходимо понимать любому администратору VPS/VDS. Если сказать проще, то:

  1. Cron – это планировщик задач. С его помощью вы можете настроить запуск определенных скриптов с заданными интервалами. Например, вы можете каждый день в 8 часов вечера собирать статические данные с сервера, или формировать логи, или делать бэкапы, или настроить проверку обновлений для системы. В общем, полезная штука, с каких сторон бы не посмотреть.
  2. Crontab – это таблица, где записано расписание запуска скриптов и программного обеспечения. Она имеет специальный формат, который поддерживается демоном и считывается сервером.

На каждую учетную запись приходится своя таблица crontab, поэтому для всех пользователей можно настроить свое расписание и установить какие-то специфические задачи.

Принцип использования Cron

Этот демон широко используется для настройки повторяющихся заданий при работе сервера. По сути, список возможных сценариев использования ограничивается лишь навыками и фантазией администратора. Вот несколько примеров сценариев использования Cron:

  • планирование оповещений, которые предоставляют информацию о состоянии сервера, физических показателях оборудования и т.д.;
  • формирование логов по системе безопасности;
  • коррекция системного времени для аппаратного и программного обеспечения;
  • резервное копирование данных;

Богатый синтаксис демона позволяет настроить любую периодичность заданий, начиная с часа и заканчивая выполнением раз в году. Умение грамотно использовать Cron важно, поскольку снижает необходимость вмешательства в работу сервера со стороны администратора. По сути, работу VPS/VDS можно полностью автоматизировать, а когда под управлением специалиста находится сразу несколько десятков серверов, то умение правильно настроить планировщик задач – жизненно необходимая вещь.

Принцип работы Cron и crontab через панель управления

У многих хостинг-провайдеров есть собственная панель управления, в которой разработчики предусмотрели возможность более удобной настройки планировщика задач через графический интерфейс. Например, такой планировщик есть в ISPmanager, и для формирования задач достаточно перейти в раздел «Планировщик CRON», расположенный в меню слева, и нажать на «Создать».

В появившемся окне потребуется ввести:

  1. Адрес e-mail. Сюда вписываем почтовый адрес, на который будут приходить уведомления о статусе выполнения заданий. Можно оставить пустым, если в этом нет необходимости.
  2. Команду – сюда вписываем путь к программе, которую ставим на выполнение. Если планируете запускать php-скрипт, прописываем также путь к интерпретатору. Например, так: /usr/bin/php7.0 /var/www/new_user/data/www/mysite/script.php.
  3. Расписание – настраивается в базовом или в экспертном режиме, здесь вы задаете периодичность выполнения задач.
  4. Описание – просто комментарий, позволяющий более удобно ориентироваться в планировщике. Если заданий много, то очень полезная вещь, не пренебрегайте.

Как видите, ничего сложно, и настройка задач cron через панель управления ISPmanager делается элементарно. То же самое можно сказать и большинстве других панелей управления, таких как cPanel, VirtualMin, DirectAdmin и т.д.

Что такое cron и как его использовать

Принцип работы Cron и crontab через SSH-протокол

Бывает и такое, что настраивать планировщик через панель управления не представляется возможным, или неудобно, или просто не интересно. Но опытный администратор легко всё может настроить и по старинке, через командную строку. Для этого нам сперва потребуется подключиться к серверу через протокол SSH.

Рассмотрим 5 ключевых параметров команд Crontab:

  • crontab -e – для редактирования или создания файлов расписания под текущую учетную запись;
  • crontab -l – отображение содержания таблицы с расписанием в текущей учетной записи;
  • crontab -r – очистка файла с расписанием;
  • сrontab -v – показ даты, когда конфиг открывался в последний раз;
  • crontab -u user – работа с расписаниями отдельных пользователей.

Последний параметр доступен только для учетных записей с правами суперпользователя.

Ну а чтобы работать с планировщиком Cron через консоль, необходимо сперва провести первичную настройку программы и убрать возможные ограничения.

Первичная настройка Cron

Выше мы уже писали, что таблицы с расписанием у каждого пользователя свои, индивидуальные, но по умолчанию они не существуют, и их нужно создать. Команда crontab -e позволяет сгенерировать таблицу, которая появится в директории /var/spool/cron. Файл будет абсолютно пустой, так что параметры придется заполнять вручную, применяя знания о синтаксисте cron. Давайте немного познакомимся с синтаксисом демона:

# crontab -e
SHELL=/bin/bash
MAILTO=вашапочта@домен.com
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
 
# Детали представим далее
 
# Пример постановки задачи через планировщик:
# .---------------- минуты (0 - 59)
# |  .------------- часы (0 - 23)
# |  |  .---------- дни месяца (1 - 31)
# |  |  |  .------- сами месяцы (1 - 12) OR may,jun,sept,aug ...
# |  |  |  |  .---- дни недели (0 - 6) (0 или 7 будет означать воскресенье, зависит от параметров системы) позволяется использовать сокращения в духе mon,tue,wed,thu,fri,sat,sun
# |  |  |  |  |
# *  *  *  *  * имя пользователя  команда, которую необходимо запланировать
 
# создание бекапа всей ОС с помощью кастомного скрипта
01 01 * * * /usr/local/bin/bckp -vbd1 ; /usr/local/bin/bckp -vbd2
 
# чтобы установить соответствие времени между ОС и «железом», используется следующий синтаксис:
03 05 * * * /sbin/hwclock –systohc
 
# а вот так можно запланировать обновления ОС:

25 04 1 * * /usr/bin/apt-get update

Для первичной настройки важнейшими являются первые три строчки. Здесь мы указываем оболочку для Cron, адрес электронной почты для получения уведомлений, а также путь к окружению. Синтаксис демона включает формат времени и команду, которую должен выполнить планировщик в определенный момент времени.

Для наглядности приведем несколько примеров использования скриптов с помощью планировщика. Вот так можно задать выполнение скрипта каждый вторник в 10:00 и в 19:00 часов:

2 10,19 * * 1 /home/evgen/script.sh

А вот так устанавливается ежедневный сценарий в 0:30 и 12:30:

30 */12 * * * script.sh

В общем, ничего сложного здесь нет, всё делается элементарно. При необходимости вы можете даже запланировать сразу несколько задач в одной записи, для этого их нужно разделить точкой с запятой:

* * * * * /scripts/script.sh; /scripts/scrit2.sh

Ну и напоследок предлагаем пример скрипта, который будет запускать поиск обновлений для системы и ПО через пакетный менеджер apt ежемесячно, первого числа в 4 утра:

00 04 1 * * /usr/bin/apt-get update

Если хотите изучить тонкости применения демона более глубоко, рекомендуем изучить документацию на официальных энциклопедиях по администрированию Linux.

Установка ограничений у Cron

Есть два файла, которые ограничивают доступ к планировщику задач:

  • /etc/cron.allow – здесь содержатся данные об учетных записях пользователей, которые могут планировать задачи;
  • /etc/cron.deny – а здесь перечислены те пользователи, которым не разрешается работать с планировщиком.

Записи в обеих файлах нужно вести так: одно имя пользователя в каждой строке без пробелов. Это так называемые файлы контроля доступа, и они будут считываться каждый раз, когда пользователь попытается работать с планировщиком. Если имя учетной записи указано одновременно в обеих файлах, то файл /etc/cron.deny будет игнорироваться. Если же оба эти файла не существуют, то на сервере не будет никаких ограничений, связанных с планировщиком.

Дополнительные сведения

Во-первых, не брезгуйте указывать почтовый адрес в параметрах планировщика, так как это позволит вам своевременно получать важные сообщения о событиях на сервере. Если вдруг будут ошибки, вы сможете их оперативно устранить.

Во-вторых, многие не знают, как добавить в планировщик на выполнение скрипт PHP. Давайте посмотрим на примере скрипта с таким путем: /var/www/user/data/www/вашдомен.com/script.php. Вот так его можно передать интерпретатору:

/usr/bin/php /var/www/user/data/www/вашдомен.com/script.php

А вот так можно вызвать скрипт через wget:

/usr/bin/wget вашдомен.com/script.php

Если остались какие-то вопросы, можете поинтересоваться у наших специалистов по контактным номерам телефонов или через Livechat. Спасибо за внимание!

views 1m, 3s
views 2
Поделиться

Была ли эта статья полезной для вас?

Популярные предложения VPS

Другие статьи на эту тему

cookie

Принять файлы cookie и политику конфиденциальности?

Мы используем файлы cookie, чтобы обеспечить вам наилучший опыт работы на нашем сайте. Если вы продолжите работу без изменения настроек, мы будем считать, что вы согласны получать все файлы cookie на сайте HostZealot.