Перейти к содержимому
Не упустите специальную скидку 20% для новых клиентов! Промокод: KAVESNET20 Скопировано
Linux

Что такое cron-задачи и как их настроить? Гид по Linux-планированию

Cron на Linux для авто-бэкапов, очистки логов и запуска скриптов. Синтаксис crontab, примеры и частые ошибки.

Команда KavesNET 15 января 2026 г. 3 мин чтения
Cron-задачи изображение

Хотите автоматический бэкап каждую ночь, еженедельную очистку логов или health-check каждые 5 минут? Cron — стандартный инструмент Linux. В этом гиде — синтаксис crontab, примеры и подводные камни.

Что такое cron?

Cron — Linux-демон, запускающий команды по расписанию. Каждую минуту читает crontab и триггерит назревшие задачи.

Синтаксис crontab

Строка cron — 5 полей времени + команда:

* * * * * команда
│ │ │ │ │
│ │ │ │ └── День недели (0-7, 0 и 7 = воскресенье)
│ │ │ └──── Месяц (1-12)
│ │ └────── День месяца (1-31)
│ └──────── Час (0-23)
└────────── Минута (0-59)

Практические примеры

ВыражениеЗначение
* * * * *Каждую минуту
*/5 * * * *Каждые 5 минут
0 * * * *В начале каждого часа
0 3 * * *Ежедневно в 03:00
0 3 * * 1По понедельникам в 03:00
0 3 1 * *1-го числа каждого месяца 03:00
30 2 * * 1-5Будни 02:30
@rebootПри старте сервера
@dailyЕжедневно 00:00
@weeklyВоскресенье 00:00

Тестируйте сложные выражения: crontab.guru

Как редактировать crontab

crontab -e        # текущего пользователя
sudo crontab -e   # root
crontab -l        # список
crontab -r        # удалить ВСЁ (осторожно!)

Первый раз — выбор редактора (nano — проще, или vim).

Примеры

Ночной бэкап

0 3 * * * /usr/local/bin/backup-wp.sh >> /var/log/backup.log 2>&1

Очистка логов раз в час

0 * * * * find /var/log/myapp -name "*.log" -mtime +30 -delete

Health-check каждые 5 минут

*/5 * * * * curl -s -o /dev/null -w "%{http_code}" https://ваш-сайт.com >> /var/log/health.log

Бэкап БД

30 2 * * * mysqldump -u root -p'ПАРОЛЬ' db | gzip > /backup/db-$(date +\%Y\%m\%d).sql.gz

⚠️ % в crontab спецсимвол — экранируйте \%.

Обновление сертификата

0 4 * * * certbot renew --quiet && systemctl reload nginx

Подробно про SSL — пост Let’s Encrypt.

Как проверить, что cron сработал

sudo systemctl status cron
sudo tail -f /var/log/syslog | grep CRON
sudo tail -f /var/log/cron

Для теста — запланируйте на 1-2 минуты вперёд и наблюдайте лог.

Подводные камни

  • Cron не сработал: команды с абсолютным путём (/usr/bin/php, а не просто php)
  • Нет переменных окружения: cron с минимальным env → задайте PATH= в начале скрипта
  • Забыть %: date +%Y%m%d ломается → \%
  • Не видно вывод: без mail-настройки STDOUT теряется → >> log 2>&1
  • Таймауты PHP/Node: запускается как CLI, нет web-timeout — но длинные скрипты в фон
  • Часовой пояс: UTC-сервер сдвигает время → sudo timedatectl set-timezone Europe/Moscow

Альтернатива systemd-timers (современнее)

systemd-таймеры современнее cron с лучшей интеграцией логов:

/etc/systemd/system/backup.service:

[Unit]
Description=Daily backup

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup-wp.sh

/etc/systemd/system/backup.timer:

[Unit]
Description=Daily backup timer

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target
sudo systemctl enable --now backup.timer
sudo systemctl list-timers

Итог

Cron — основа автоматизации сервера. Учится за 5 минут, используется ежедневно. Бэкапы, очистка, мониторинг — всё через cron.

По теме: Бэкапы серверов · Расширение диска Linux

Теги Linux Cron Автоматизация Туториал

Похожие статьи

Возможно, вас также заинтересует.