Логин:
Пароль:

Что такое Cron, задания по расписанию в Linux

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

Что такое Cron?

Cron – это программная утилита в системах Unix/Linux, выполняющая задания по расписанию, которая запускается в виде демона (работает в фоновом режиме). Cron используется для запуска заданий в определенные моменты времени, даты или интервалы. Чаще всего его используют для автоматизации обслуживания или администрирования систем, но его универсальность позволяет выполнять и более простые задачи, такие как: отправка почты по расписанию, обновление информации на сайтах, подсчет статистики и т.д.

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

Настройка заданий cron

Основным рабочим файлом cron является файл crontab, который обычно расположен в директории /etc. Доступ к этому файлу имеет только системный администратор сервера, что актуально только для услуг аренды VPS/VDS или сервера.

Также для создания заданий можно использовать каталоги: /etc/cron.d, /etc/cron.hourly, /etc/cron.daily, /etc/cron.monthly и /etc/cron.weekly, где каталог /etc/cron.d используется для создания заданий в формате crontab, а остальные директории для размещения исполняемых файлов, запускаемых в периодичностью, соответствующей названиям каталогов.

Для рядовых пользователей созданы файлы в отдельной директории, которая может иметь путь /var/spool/cron.

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

Формат записи заданий крон

Задачи cron записываются в следующих форматах... Для файла crontab:

* * * * *     cat /etc/hosts >/dev/null 2>&1

Для файлов пользователей:

* * * * *     admin     cat /etc/hosts >/dev/null 2>&1

Где:

* * * * * - это время выполнения задачи;
admin – имя пользователя, из-под которого запускается задача;
cat /etc/hosts gt;/dev/null 2>&1 – выполняемая команда или программа, здесь же указывается >/dev/null 2>&1, что перенаправляет ввод-вывод и (в том числе) блокирует отправку сообщений на e-mail.

Время выполнения подразделяется на пять полей: минуты (0—59), часы (0—23), день (1—31), день недели (0-7; воскресенье = 0 или 7), месяц (1—12). Здесь же возможно использование символов: «*», «,», «-», где символ «*» имеет значение – повторять каждый раз, а символы «,» и «-» используются для создания перечислений и периодов.

Также существуют дополнительные определения времени:

  • @yearly (or @annually) - запуск раз в год в полночь 1 января;
  • @monthly - запуск раз в месяц в полночь первого дня месяца;
  • @weekly - запуск раз в неделю в полночь в воскресенье утром;
  • @daily (or @midnight) - запуск раз в день в полночь;
  • @hourly - запуск раз в час в начале часа;
  • @reboot - запуск при перезагрузке демона cron.

Разрешение и запрет использования cron

Управление разрешениями cron производится двумя файлами.

/etc/cron.allow - если этот файл существует, то в нем должно быть указано имя пользователя, которому разрешен доступ к cron.

/etc/cron.deny - если файл cron.allow не существует, но файл /etc/cron.deny существует, то для использования заданий cron пользователь должен отсутствовать в файле /etc/cron.deny.

При отсутствии этих файлов права доступа к cron задаются параметрами конфигурации данной программы.