Cron — это служба планирования заданий на основе времени, присутствующая в Unix-подобных операционных системах. Пользователи планируют периодический запуск заданий (команд или сценариев) в фиксированное время, даты или интервалы.
Происхождение и ранняя история Cron
Первая реализация cron относится к версии 7 Unix. Термин «крон» происходит от греческого слова «хронос», обозначающего время. Эта версия Unix, выпущенная в 1979 году, имела простую программу cron, которая выполняла задачи через определенные промежутки времени. Функциональность Cron была позже расширена Полом Викси в 1987 году. Эта версия, известная как Vixie Cron, является наиболее часто устанавливаемой сегодня версией и версией, на которую обычно ссылаются, когда люди упоминают «Cron».
Расширение концепции Cron
Cron позволяет пользователям автоматизировать обслуживание или администрирование системы, хотя его универсальный характер делает его полезным для таких вещей, как загрузка файлов из Интернета и загрузка электронной почты через регулярные промежутки времени. Среда cron похожа на песочницу, в которой задания cron выполняются из обычной среды оболочки.
Каждый пользователь может иметь свою собственную таблицу crontab, и хотя это файлы в /var/spool/, они не предназначены для непосредственного редактирования. Синтаксис выражений cron можно разбить на два основных типа синтаксиса: синтаксис cron Unix и более сложный синтаксис, известный как синтаксис выражений cron или синтаксис кварцевого cron.
Внутренняя структура Cron и как она работает
Cron работает на основе простого, но мощного файла конфигурации, известного как файл «crontab». Этот файл содержит одну строку для каждой выполняемой задачи, состоящую из пяти полей времени и даты, за которыми следует команда, которую необходимо выполнить в указанное время.
Пять полей представляют:
- Минуты после часа (0–59)
- Часы в сутках (0 – 23)
- Дни в месяце (1 – 31)
- Месяцы в году (1 – 12)
- Дни недели (0–7, где 0 и 7 — воскресенье)
Поле команды содержит задачу, которая будет запускаться во время, указанное в первых пяти полях.
Ключевые особенности Cron
К основным функциям Cron относятся:
- Это позволяет задачам автоматически запускаться в фоновом режиме через определенные промежутки времени.
- Он предоставляет гибкую платформу для планирования задач (скриптов или команд) с различными единицами времени.
- Каждый пользователь может иметь свой собственный файл crontab.
- Запуск заданий Cron можно запланировать по минутам, часам, дням недели, дням месяца и месяцам года.
- Cron предоставляет простой и эффективный способ автоматизации различных системных задач.
Типы Крон
Задания Cron можно разделить на следующие категории:
Тип | Описание |
---|---|
Перезагрузить | Запускается один раз при запуске. |
Анакрон | Запускается с интервалом, указанным в днях. |
Система Крон | Они хранятся в /etc/crontab и в каталоге /etc/cron.d/ и предназначены для всей системы. |
Пользователь Крон | У каждого пользователя могут быть свои собственные, и они хранятся в /var/spool/cron/crontabs/. |
Использование Cron, проблемы и их решения
Cron полезен для автоматизации задач, но при неосторожном использовании он может привести к проблемам. Например, неправильно настроенное задание cron может привести к высокой загрузке ЦП. Кроме того, cron отправляет по электронной почте результаты своих заданий, если таковые имеются, пользователю, от имени которого он запускает задания. Это может привести к пропущенным ошибкам, если не проверять регулярно.
Общие решения этих проблем включают в себя:
- Регулярная проверка высокой загрузки ЦП и перенастройка или остановка ненужных заданий.
- Убедитесь, что все команды и сценарии работают правильно, прежде чем настраивать их как задания cron.
- Перенаправление вывода в файл журнала или настройка почтового сервера для более эффективного мониторинга заданий cron.
Сравнение с аналогичными инструментами
Существуют и другие планировщики задач, похожие на cron, например таймеры anacron и systemd. Основные различия между ними можно резюмировать следующим образом:
Инструмент | Описание |
---|---|
Крон | Подходит для задач, выполняемых в определенное время дня. Не запускает пропущенные задания. |
Анакрон | Подходит для задач, запускаемых один раз в день/еженедельно/ежемесячно. Выполнит пропущенные задания, когда машина снова будет подключена к сети. |
Системад | Подходит для более сложных сценариев, поскольку предлагает больше возможностей и хорошо интегрируется с современными дистрибутивами Linux. |
Перспективы будущего и сопутствующие технологии
По мере того как системы на базе Unix продолжают развиваться, развивается и Cron. Несмотря на появление более продвинутых планировщиков задач, таких как systemd, простота и мощь Cron гарантируют, что он по-прежнему широко используется и сегодня.
Недавняя тенденция к контейнерным приложениям и архитектурам микросервисов также привела к появлению новых способов использования Cron. Например, Kubernetes, популярная платформа оркестрации контейнеров, имеет функцию, известную как CronJobs, которая похожа на Cron в системах на базе Unix.
Прокси-серверы и Cron
Прокси-серверы можно эффективно использовать в сочетании с Cron для автоматизации определенных задач. Например, если у вас есть сценарий, которому необходимо регулярно получать доступ к веб-сайту или API через прокси-сервер, вы можете настроить задание cron для запуска этого сценария через определенные промежутки времени.
Cron также можно использовать для ротации прокси через определенные промежутки времени, уменьшая вероятность блокировки любого отдельного прокси. Например, прокси-службы OneProxy можно автоматизировать с помощью Cron для таких задач, как очистка данных, автоматизация задач в социальных сетях и т. д.
Ссылки по теме
Для получения дополнительной информации о Cron обратите внимание на следующие ресурсы: