Найти в Дзене
UFO.Hosting

Crontab: личный распорядок для вашего сервера

Иногда лучший способ навести порядок на сервере — это один раз спокойно расписать, что и когда должно происходить. В этой ситуации очень выручает связка инструментов cron + crontab. Благодаря ее вы сможете настроить автоматические бэкапы, очистку логов по графику и многое другое. В этом гайде мы подробно расскажем, как все настроить. Нужен стабильный сервер на Linux без переплат? По промокоду DZEN вас ждёт скидка 10% на виртуальные и выделенные серверы от UFO.Hosting. Мощные процессоры, быстрые NVMe-диски и скорость до 10 Гбит/с — отличная база, чтобы ваши проекты работали без сбоев. Что такое cron и crontab Cron — это системный планировщик. Crontab — его «ежедневник»: персональный файл с расписанием команд для конкретного пользователя. Чтобы его открыть, достаточно ввести одну из этих программ: Каждая строка — это расписание и команда. Классическая форма состоит из пяти полей: минуты, часы, день месяца, месяц и день недели. Например: 0 3 * * * /usr/local/bin/backup.sh Эта запись запус
Оглавление

Иногда лучший способ навести порядок на сервере — это один раз спокойно расписать, что и когда должно происходить. В этой ситуации очень выручает связка инструментов cron + crontab. Благодаря ее вы сможете настроить автоматические бэкапы, очистку логов по графику и многое другое.

В этом гайде мы подробно расскажем, как все настроить.

Нужен стабильный сервер на Linux без переплат? По промокоду DZEN вас ждёт скидка 10% на виртуальные и выделенные серверы от UFO.Hosting. Мощные процессоры, быстрые NVMe-диски и скорость до 10 Гбит/с — отличная база, чтобы ваши проекты работали без сбоев.

Что такое cron и crontab

Cron — это системный планировщик. Crontab — его «ежедневник»: персональный файл с расписанием команд для конкретного пользователя. Чтобы его открыть, достаточно ввести одну из этих программ:

  • crontab -e — редактировать;
  • crontab -l — посмотреть текущие задания.

Каждая строка — это расписание и команда. Классическая форма состоит из пяти полей: минуты, часы, день месяца, месяц и день недели. Например:

0 3 * * * /usr/local/bin/backup.sh

Эта запись запустит скрипт ежедневно в 03:00. Есть и короткие ярлыки: @hourly, @daily, @weekly, а также @reboot — выполнить после перезагрузки.

Важно помнить: cron запускает команды в «чистой» среде. Переменная PATH минимальна, поэтому лучше писать полные пути к бинарникам и файлам и не рассчитывать на алиасы интерактивной оболочки.

Полезные примеры на каждый день

Ночная резервная копия с логом ошибок в один файл:

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

Чистка временных файлов раз в неделю, чтобы /tmp не слишком «распухал»:

0 4 * * 0 /usr/bin/find /tmp -type f -mtime +7 -delete

Автопродление сертификатов Let’s Encrypt без лишнего шума:

12 3 * * * /usr/bin/certbot renew --quiet

Мониторинг доступности сайта каждые 5 минут с письмом при сбое. Вверху crontab добавьте адрес получателя:

MAILTO=admin@example.com

*/5 * * * * /usr/bin/curl -fsS https://example.com || /usr/bin/mail -s "Site down" admin@example.com

Обновления по понедельникам (если такова политика сервера):

0 5 * * 1 /usr/bin/apt-get update && /usr/bin/apt-get -y upgrade

Автозапуск приложения после перезагрузки — полезно для контейнеров и ботов:

@reboot /usr/bin/docker compose -f /srv/app/docker-compose.yml up -d

Пара практичных привычек

Записывайте абсолютные пути — так вы исключите сюрпризы с окружением. Перенаправляйте вывод в лог и ошибки в тот же файл (>> /var/log/task.log 2>&1), чтобы понимать, что произошло ночью. Если задание требует прав администратора, редактируйте crontab именно пользователя root: sudo crontab -e. И проверьте, что служба запущена: в Debian/Ubuntu это systemctl status cron, в RHEL-семействе — systemctl status crond.

Итог

Crontab — отличный помощник любого сисадмина, который избавляет от рутинных задач. Достаточно всего один раз все продумать и правильно оформить записи и сервер начнет жить по графику.