August 25, 2026 · by Alex M.
Управление сервером неизбежно включает повторяющиеся задачи: резервное копирование, очистка временных файлов, отправка отчётов, обновление баз данных. Выполнять их вручную — значит тратить время и рисковать ошибками. Решение давно встроено в любой Linux-дистрибутив и называется cron — планировщик задач, работающий в фоновом режиме.
В этом руководстве вы узнаете, как правильно настроить cron jobs на VPS Linux — от базового синтаксиса до продвинутых примеров, логирования и устранения неполадок.
Cron — это системный демон, который постоянно работает в фоне и проверяет, есть ли задачи, запланированные к выполнению. Задачи определяются в специальных файлах — crontab (cron table).
Каждый пользователь Linux может иметь свой crontab, а в системе также есть глобальный /etc/crontab. Демон cron читает эти файлы и выполняет команды в назначенное время.
systemctl status cron # Debian/Ubuntu
systemctl status crond # CentOS/AlmaLinux/Rocky
Если сервис не активен, запустите его:
systemctl enable --now cron
Каждая строка crontab имеет следующий формат:
* * * * * /путь/к/команде
│ │ │ │ │
│ │ │ │ └── День недели (0-7, где 0 и 7 = воскресенье)
│ │ │ └──── Месяц (1-12)
│ │ └────── День месяца (1-31)
│ └──────── Час (0-23)
└────────── Минута (0-59)
| Оператор | Значение | Пример |
|---|---|---|
* |
Любое значение | * * * * * = каждую минуту |
, |
Список значений | 0 9,18 * * * = в 09:00 и 18:00 |
- |
Диапазон | 0 9-17 * * * = каждый час с 9 до 17 |
/ |
Шаг | */15 * * * * = каждые 15 минут |
Для редактирования crontab текущего пользователя:
crontab -e
Для просмотра существующих задач:
crontab -l
Для редактирования crontab другого пользователя (от root):
crontab -u www-data -e
Совет: При первом запуске система спросит, какой редактор использовать. Выберите
nano— он проще для начинающих.
0 2 * * * /usr/bin/mysqldump -u root -pВАШ_ПАРОЛЬ база_данных > /backup/db_$(date +\%Y\%m\%d).sql
Задача запускается каждую ночь в 02:00 и сохраняет дамп базы данных. На VPS NVMe высокая скорость записи сокращает время резервного копирования.
0 3 * * 0 /usr/bin/find /tmp -type f -mtime +7 -delete
Запускается каждое воскресенье в 03:00 и удаляет файлы из /tmp старше 7 дней.
0 0 1 * * /usr/bin/certbot renew --quiet && systemctl reload nginx
Проверяет и обновляет SSL-сертификаты в первый день каждого месяца. Незаменимо при использовании Let's Encrypt.
0 8 * * * /usr/bin/df -h | /usr/bin/mail -s "Отчёт диска $(hostname)" [email protected]
*/5 * * * * /usr/bin/php /var/www/html/wp-cron.php > /dev/null 2>&1
WordPress использует собственную систему cron, основанную на посещениях. Рекомендуется отключить WP-Cron и использовать системный cron — особенно на хостинге WordPress с высоким трафиком.
Cron запускается с минимальным окружением и не наследует переменные оболочки пользователя. Поэтому команды необходимо указывать с абсолютными путями.
В начале crontab можно определить глобальные переменные:
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
[email protected]
MAILTO — адрес для отправки вывода команд (установите "" для отключения писем).PATH — пути для поиска команд.По умолчанию cron отправляет вывод по электронной почте. Лучшая практика — перенаправить вывод в лог-файлы:
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
>> добавляет вывод в конец файла (не перезаписывает).2>&1 перенаправляет ошибки в тот же файл.Чтобы лог-файлы не росли бесконечно, используйте logrotate — важный инструмент для администрирования Linux-серверов.
Помимо пользовательских crontab, Linux предоставляет предустановленные директории:
| Директория | Частота |
|---|---|
/etc/cron.hourly/ |
Каждый час |
/etc/cron.daily/ |
Ежедневно |
/etc/cron.weekly/ |
Еженедельно |
/etc/cron.monthly/ |
Ежемесячно |
Чтобы добавить скрипт для ежедневного запуска, скопируйте его в /etc/cron.daily/ и назначьте права на выполнение:
chmod +x /etc/cron.daily/myscript.sh
Файлы в /etc/cron.d/ поддерживают полный синтаксис crontab с указанием пользователя:
0 4 * * * root /usr/local/bin/cleanup.sh
Неправильно настроенный cron может стать вектором атаки. Вот основные правила:
chmod 777 может изменить любой пользователь.bash
chmod 700 /usr/local/bin/backup.sh
chown root:root /usr/local/bin/backup.sh~/.my.cnf для MySQL)./etc/cron.allow и /etc/cron.deny.bash
grep CRON /var/log/syslog # Ubuntu/Debian
grep CRON /var/log/cron # CentOS/AlmaLinuxНа управляемом выделенном сервере эти вопросы берёт на себя наша команда специалистов.
Если задача не выполняется, проверьте следующее:
chmod +x script.sh).source ~/.bashrc в начало скрипта или определите PATH в crontab.crontab -l и протестируйте команду вручную.systemctl status cron.# Быстрый тест: запустить команду от имени пользователя cron
su -s /bin/bash www-data -c "/usr/bin/php /var/www/html/script.php"
Современные дистрибутивы Linux (Ubuntu 20.04+, AlmaLinux 8+) предлагают systemd timers — более мощную альтернативу cron. Они позволяют:
Тем не менее для большинства задач cron остаётся простым, портативным и вполне достаточным инструментом.
Cron jobs — фундаментальный инструмент для любого системного администратора. Правильная настройка позволяет автоматизировать резервное копирование, обслуживание, отправку отчётов и многое другое — снижая вероятность ошибок и экономя часы ручного труда.
Для надёжного выполнения автоматизированных задач вам нужна стабильная платформа. VPS NVMe от CLIQHOST обеспечивает выделенные ресурсы, высокую скорость I/O и полный root-доступ. Нужна помощь с настройкой сервера? Ознакомьтесь с нашими услугами администрирования серверов или свяжитесь с нами — мы готовы помочь.
Реальные отзывы клиентов, которые доверяют CLIQHOST за производительность, надёжность и профессиональную техническую поддержку.
"We moved our online shop from a foreign host and the difference is night and day — pages load instantly and support replies in minutes, in Romanian."
"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."
"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."