Практически любую задачу в системе Linux можно автоматизировать. Мы можем писать произвольные сценарии, автоматизируя определенные действия, однако иногда возникает необходимость автоматического выполнения сценариев в определенное время или с заданным интервалом. В частности, можно сделать так, чтобы сценарий опрашивал сетевые маршрутизаторы или коммутаторы и при обнаружении проблем посылал администратору сообщение или вносил запись в специальную базу данных.
Демон cron — стандартный инструмент для периодического выполнения команд в UNIX/Linux системах. Запускается на этапе загрузки системы и работает до её выключения.
Демон постоянно считывает файл конфигурации с которого получает список командных строк и расписание их вызова. файл конфигурации в современных Linux системах расположен в каталоге /etc и называется crontab (/etc/crontab).
Формат конфигурационного файла очень прост. Каждая строка содержит шесть полей и представляет одну команду. Первые пять полей содержат информацию о времени запуска команды, шестая и есть сама команда.
минута час день месяц день_недели команда
Каждое поле отделяется друг от друга пробелами, но в поле команда пробел выступает как разделитель аргументов команды.
Спецификация времени в файле конфигурации:
минута - от 0 до 59
час - от 0 до 23
день - от 1 до 31
месяц - от 1 до 12
день_недели - от 0 до 6 (0 - воскресенье)
Каждое поле может содержать:
- * — обозначает любую цифру;
- целое число;
- два целых числа разделенных дефисом, задают диапазон;
- целые числа или диапазоны, разделенные запятыми
Например 30 10 * * * echo "Hello World"
Означает «Каждый день в 10:30» будет выполнятся команда echo «Hello world».
Если в одном из полей установлена звездочка, это означает, что команда будет выполнятся каждый час/день/месяц/минуту. Соответственно «* * * * * echo «Hello World»» — будет выполнять команду каждую минуту.
Мы можем использовать символ шага, чтоб выполнять команду каждые 30 минут мы можем в поле минут установить как значение 30, так и */30.
Применение периодических задач cron очень полезно. Можно применять для очистки файловой системы или для скриптов которые собирают различные метрики, будь то парсинг курсов валют, сбор информации с оборудования, сбор статистики, проверка соединения и т.д.