В системах 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 задаются параметрами конфигурации данной программы.