Очень часто в Linux-подобных системах может потребоваться автоматизировать некоторые рутинные процессы. Для этого применяются специальные планировщики. Одним из наиболее известных из них является Cron, о настройках которого и пойдёт речь в этой статье.
Что представляет собой Cron?
Название программы образовано от греческого «хронос», означающего время. Что, собственно, логично. Задача демона — в определённые моменты выполнять записанные в него команды. Сам процесс реализации основан на проверке таблиц крона и сравнении их с текущими датой и временем.
Файл crontab
Самым главным элементом настройки Cron является конфигурационный файл crontab. Он содержит в себе команды исполнения и пути к скриптам. Все они запускаются от имени суперпользователя. Так как они расположены в директории /etc/cron.d, настройка этих файлов должна производиться именно там.
Для каждого отдельного пользователя системы используется свой файл crontab.
Разные дистрибутивы Linux используют свои каталоги для хранения пользовательских настроек. Для RedHat это — var/spool/cron. В Debian и Ubuntu это будет var/spool/cron/crontabs. И var/spool/cron/tabs в SUSE.
Список команд для управления crontab
Cron имеет набор специальных директив, с помощью которых можно управлять планировщиком. Применять их нужно в связке с crontab. Вот небольшой список:
- -u имя_пользователя. Устанавливает пользователя, с задачами и настройками которого будут производиться дальнейшие действия. Если опустить данный ключ, то будет задан пользователь по умолчанию.
- -l. Выведет текущий список задач.
- -e. Производит запуск редактора для планировщика задач.
- -r. Удаляет все имеющиеся задачи из списка.
Формат задачи
Как было сказано выше, настройка Cron заключается в задании команд в специальном файле. Выглядит это как простая запись, состоящая из шести колонок:
- в первой указывается количество минут. Доступный интервал — от 0 до 59. Можно использовать несколько значений, диапазон и специальные символы;
- вторая колонка — часы. Могут использоваться значения от 0 до 23;
- далее — день. Здесь можно указать число от 1 до 31;
- четвёртый — месяц. Минимальное значение 1, максимальное — 12;
- пятая — неделя. 0 или 7 соответствует воскресенью;
- последней идёт сама выполняемая команда.
Как было упомянуто, в файле можно указать специальные символы, «*» или «/». Например, такая запись — 23 */2 *** echo «Выполнить» означает, что каждый чётный час и 23 минуты будет отображаться надпись «Выполнить».
Особенности файла crontab
При настройке Cron необходимо помнить, что он обладает специфичными свойствами, которые стоит учитывать при конфигурировании:
- каждый файл обязательно должен завершаться пустой строкой, иначе последний пункт может быть проигнорирован, а иногда и целиком весь файл;
- файлы, размещённые в каталогах, имеющих в имени точку, также будут проигнорированы планировщиком;
- в файлах настройки можно использовать символы решётки «#». Они применяются для того, чтобы отметить строки с комментариями. Это очень удобно для описания запланированных задач и команд.
Дополнительные переменные
При настройке Cron можно применять в командах специальные значения и сокращения. Например, для указания дня недели можно использовать следующий список:
- sun — воскресенье;
- mon — понедельник;
- tue — вторник;
- wed — среда;
- thu — четверг;
- fri — пятница;
- sat — суббота.
Для месяцев также имеются отдельные буквенные значения — jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec.
Также для настройки Cron имеются отдельные переменные, способные заменить целые строки команд:
- @reboot. Команда будет стартовать каждый раз при запуске компьютера;
- @yearly. Данная задача будет запускаться один раз в год. Эквивалентная ей запись в числовом виде может быть такой: 0 0 1 1 *. Ее синоним ещё можно записать как @annually;
- @monthly. Как можно догадаться из названия, данная переменная производит запуск команды раз в месяц. Ее числовой аналог — 0 0 1 * *;
- @weekly. Данная переменная будет запускаться каждую неделю;
- @dayly. Раз в день;
- @midnight. Запуск будет произведён в полночь;
- @hourly. Каждый час.
Настройка Cron в Centos 7
Сам процесс установки и конфигурирования мало чем отличается от других схожих Linux дистрибутивов. Перед настройкой Cron в Centos необходимо установить пакет cronie в систему. Сделать это можно с помощью команды yum install cronie. Для создания файла с инструкциями нужно выполнить в терминале crontab -e. Все системные настройки Cron будут сохраняться по адресу /var/spool/cron/имя пользователя.
Несколько полезных примеров для создания часто повторяющихся задач
Можно провести настройку Cron таким образом, чтобы охватить практически все потребности любого пользователя.
- 00 09-17 * * 1 - 5 /путь/ к команде/ крона. Данная команда будет автоматически выполнять запланированное действие каждый рабочий день с 9 до 5 часов каждую первую минуту;
- 00 9,17 * * * /путь/ к команде/ крона. В этом примере происходит исполнение команды два раза в день. Первый в 9, второй - в 5 часов. Знак «*» показывает, что команда будет выполняться каждый день, месяц и год;
- Также не стоит забывать и про символьные переменные. Например, @monthly будет выполнять задачу каждый месяц в первую минуту первого часа первого дня. А @daily будет запускаться каждый день.
Отзывы пользователей о планировщике Cron
Как правило, для рядовых и неискушённых пользователей Cron представляет собой всего лишь набор символов. Но вот для системных администраторов и заядлых «линуксоидов» данная утилита является незаменимым помощником. Многие отмечают гибкость и производительность хорошо настроенной системы.
С помощью Cron можно автоматизировать рутинные процессы, которые слишком сложно выполнять вручную через определённые промежутки времени. Будь то создание бэкапов системы или её обновление.
Однако есть и небольшие нюансы. Например, некоторые сисадмины отмечают, что было бы неплохо иметь в планировщике возможность реализации команд каждую секунду. Но разработчики программы не раз давали понять, что данную опцию внедрять они не будут.
Начинающие пользователи обычно теряются в большом количестве настроек и сложностей при запуске демона планировщика. Для них имеются более понятные оболочки. Например, для дистрибутивов, основанных на Debian, ей может стать gnome schedule. KDE версия называется kcron.
Выводы
В целом, Cron является отличным инструментом для автоматизации многих рутинных процессов и облегчения работы с системой. Для тех, кто недолюбливает командную строку и тонкости ручной настройки конфигурационных файлов, имеются несколько разновидностей Cron в графической оболочке, упрощающих взаимодействие.
В других операционных системах также имеются свои версии планировщиков, например, в среде Windows это NnCron. Еще один аналог — Task Scheduler. Он также доступен в линейке систем от Microsoft. А его консольная версия — schtasks.exe.