Cron — системный демон для запуска команд по расписанию в Unix/Linux. Читает файлы crontab (cron table) и периодически — каждую минуту — проверяет, нужно ли запустить какую-либо задачу. Без Cron были бы невозможны автоматические резервные копии, обновление SSL-сертификатов, ротация логов и рассылки по расписанию.
Как работает
Демон cron запускается как системный сервис (systemctl status cron или crond в RHEL-системах). Каждую минуту читает системный crontab (/etc/crontab, /etc/cron.d/) и пользовательские crontab-файлы (/var/spool/cron/crontabs/). Если текущее время совпадает с расписанием задачи — запускает команду.
Формат строки crontab: минута час день-месяца месяц день-недели команда. Поддерживаются: конкретные значения (30), диапазоны (1-5), шаги (*/5 — каждые 5), перечисления (1,3,5). Специальные алиасы: @daily (00:00), @weekly (воскресенье 00:00), @reboot (при загрузке).
Переменная окружения MAILTO в crontab задаёт адрес для вывода задачи. Без неё вывод отправляется системной почтой локальному пользователю — что часто нежелательно. Редирект > /dev/null 2>&1 подавляет весь вывод.
История
Cron создан Кеном Томпсоном для Unix Version 7 в 1979 году. В 1987 году Пол Викси переработал cron для SysV, добавив поддержку пользовательских crontab-файлов (Vixie Cron). Этот вариант стал основой для большинства современных реализаций, включая ISC Cron в Linux. В systemd появился Timer — более гибкий аналог cron с зависимостями между задачами и логированием через journald.
Примеры задач
0 2 * * * /usr/bin/certbot renew --quiet— обновление SSL-сертификата в 02:00 каждый день*/15 * * * * /home/user/check_uptime.sh— скрипт каждые 15 минут0 0 * * 0 /usr/bin/mysqldump -u root db > /backup/db.sql— дамп базы каждое воскресенье в полночь@reboot /usr/bin/php /var/www/site/artisan queue:work &— запуск воркера при перезагрузке
На что обращать внимание
Cron запускает задачи с минимальным окружением — переменные PATH, HOME, LANG могут отличаться от интерактивной оболочки. Команды, которые работают в терминале, могут падать в cron из-за разного PATH. Решение: указывать полный путь к исполняемым файлам (/usr/bin/php вместо php) или явно задавать PATH в начале crontab. Панели управления хостингом (ISPmanager, cPanel) предоставляют GUI для управления cron без ручного редактирования файлов.
RPM и управление пакетами
RPM используется в семействе дистрибутивов Red Hat: AlmaLinux, RHEL, CentOS, Fedora, Rocky Linux. Высокоуровневые менеджеры пакетов yum и dnf работают поверх RPM: автоматически разрешают зависимости и загружают пакеты из репозиториев. Команды: dnf install nginx, dnf update, dnf remove php. В отличие от Ubuntu/Debian (dpkg/apt), RPM-пакеты имеют расширение .rpm. На VPS с AlmaLinux 9 пакеты nginx, PHP, Docker доступны через EPEL-репозиторий. На Linux: установить RPM-пакет напрямую: rpm -ivh package.rpm.