- Home »

Автоматизация, DevOps и старый добрый cron
Автоматизация — это не просто модный тренд, а реальная необходимость для любого, кто управляет сайтами, дорвеями, сервисами или просто хочет тратить меньше времени на рутину. DevOps, в свою очередь, — это про ускорение процессов, сокращение ошибок и гибкость. А теперь угадайте, какой инструмент для автоматизации задач на Linux до сих пор остается самым популярным? Да, это он — cron.
Несмотря на все новомодные CI/CD, контейнеры и облака, cron — это как швейцарский нож: простой, надёжный, предсказуемый. Но, как и с ножом, можно порезаться, если не знаешь, как пользоваться. В этой статье я расскажу, как использовать cron на Linux-сервере для автоматизации задач, дам реальные примеры, покажу плюсы и минусы, а также подскажу, как избежать типичных ошибок.
Что такое cron и зачем он нужен?
Cron — это системный планировщик заданий в Unix-подобных системах. Он позволяет запускать скрипты, команды и программы по расписанию: каждую минуту, час, день, неделю, месяц и т.д. Если вы хотите, чтобы бэкапы делались ночью, сайт парсился по расписанию, или база чистилась автоматически — cron ваш лучший друг.
- Системные админы используют cron для резервного копирования, обслуживания и мониторинга.
- SEO-шники и дорвейщики — для автогенерации контента, апдейта XML-карт, сбора статистики.
- Вебмастеры — для регулярной оптимизации, очистки логов, проверки аптайма.
Официальная документация: man crontab
Основы работы с cron: быстро и по делу
Где живут задания cron?
- /etc/crontab — системный cron для всех пользователей.
- /var/spool/cron/crontabs/ — индивидуальные задания для каждого пользователя.
- Команда
crontab -e
— редактировать личный cron текущего пользователя.
Формат записи задания cron
Каждая строка — это расписание + команда. Пример:
* * * * * /home/user/scripts/myscript.sh
Здесь 5 звёздочек — это минуты, часы, дни месяца, месяцы, дни недели. Пример расшифровки:
- Минуты (0-59)
- Часы (0-23)
- Дни месяца (1-31)
- Месяцы (1-12)
- Дни недели (0-7, где 0 и 7 — это воскресенье)
Примеры:
0 3 * * * /usr/bin/php /var/www/site/cron/backup.php
— каждый день в 3:00 ночи делаем бэкап.
*/15 * * * * /usr/bin/wget -q -O - http://site.ru/cron.php
— каждые 15 минут дергаем cron.php (например, для WordPress или Bitrix).
Как добавить или изменить задания?
Открываем редактор:
crontab -e
Пишем задания, сохраняем, выходим. Всё, cron сам подхватит изменения.
Посмотреть список заданий:
crontab -l
Удалить все задания:
crontab -r
Практические кейсы и советы
Кейс 1: Автоматический бэкап сайта и базы данных
Скрипт для бэкапа базы:
#!/bin/bash
DATE=$(date +%F)
mysqldump -uUSER -pPASSWORD dbname | gzip > /backup/db-$DATE.sql.gz
Добавляем в cron (каждую ночь в 2:30):
30 2 * * * /home/user/scripts/backup.sh
Кейс 2: Автоматизация SEO-задач
- Генерация sitemap.xml каждую ночь:
0 1 * * * /usr/bin/php /var/www/site/generate_sitemap.php
- Сброс кэша или запуск парсера:
*/10 * * * * /usr/bin/python3 /home/user/scripts/parser.py
Кейс 3: Мониторинг и алерты
Проверка, жив ли сайт, и отправка уведомления на почту:
*/5 * * * * curl -s -o /dev/null -w "%{http_code}" https://site.ru | grep -q 200 || echo "Site down!" | mail -s "Alert" [email protected]
Плюсы и минусы cron
- Плюсы:
- Простота и надёжность — работает годами без нареканий.
- Малый расход ресурсов.
- Гибкость расписаний.
- Встроен во все Linux-дистрибутивы.
- Минусы:
Частые ошибки, мифы и советы
Ошибки новичков
- Не указывают полный путь к исполняемым файлам (например, пишут
php
вместо/usr/bin/php
). - Не перенаправляют вывод в лог (
2>&1
), и потом ищут ошибки по всему серверу. - Забывают про переменные окружения (cron запускает задачи с минимальным окружением!).
- Путают формат расписания (например, ставят
0 0 * * 0
думая, что это каждый день, а это только воскресенье). - Скрипты требуют интерактивного ввода, а cron не умеет “нажимать Enter”.
Советы по выбору
- Для простых задач — cron идеален.
- Для сложных пайплайнов и зависимостей — смотрите в сторону Jenkins, Airflow, GitHub Actions.
- Для мониторинга — используйте связку cron + Telegram-бот или email.
- Для логирования — добавьте в конец задания
> /var/log/cron.log 2>&1
.
Мифы
- “Cron не нужен, всё можно через systemd timers” — не совсем так, cron проще и привычнее, а systemd — для продвинутых случаев.
- “Cron устарел” — нет, cron жив и будет жить, пока есть shell-скрипты и Linux.
- “Cron только для системных админов” — на самом деле, его используют все, кто хочет автоматизировать что-либо на сервере.
Похожие решения
- systemd timers — альтернатива для новых дистрибутивов, чуть сложнее, но зато интегрируется с systemd.
- at — для одноразовых задач “запусти в 3 ночи”.
- Jenkins, GitHub Actions — для сложных CI/CD пайплайнов.
Подробнее о systemd timers: официальная документация
Заключение: зачем тебе cron и когда стоит задуматься о чём-то большем
Cron — это must-have для любого, кто работает с Linux-серверами, сайтами, дорвеями, парсерами или просто хочет автоматизировать рутину. С его помощью можно автоматизировать бэкапы, обновления, мониторинг, SEO-задачи и многое другое. Главное — не забывайте про логи, указывайте полный путь к командам и всегда тестируйте скрипты вручную перед запуском в cron.
Если ваши задачи становятся сложнее (например, нужны зависимости, параллелизм, централизованные логи), смотрите в сторону более продвинутых инструментов — Jenkins, Airflow, Azkaban. Но для 90% задач cron — это просто, быстро, надёжно и бесплатно.
Автоматизируйте всё, что можно автоматизировать! И пусть ваши ночные бэкапы будут всегда свежими, а парсеры — быстрыми и незаметными для конкурентов 😉
Официальная документация по cron: https://man7.org/linux/man-pages/man5/crontab.5.html
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.