// server management

Как настроить Cron Jobs на Linux VPS: полное руководство по автоматизации задач

August 25, 2026 · by Alex M.

Как настроить Cron Jobs на Linux VPS: полное руководство по автоматизации задач

Управление сервером неизбежно включает повторяющиеся задачи: резервное копирование, очистка временных файлов, отправка отчётов, обновление баз данных. Выполнять их вручную — значит тратить время и рисковать ошибками. Решение давно встроено в любой Linux-дистрибутив и называется cron — планировщик задач, работающий в фоновом режиме.

В этом руководстве вы узнаете, как правильно настроить cron jobs на VPS Linux — от базового синтаксиса до продвинутых примеров, логирования и устранения неполадок.


Что такое cron и как он работает?

Cron — это системный демон, который постоянно работает в фоне и проверяет, есть ли задачи, запланированные к выполнению. Задачи определяются в специальных файлах — crontab (cron table).

Каждый пользователь Linux может иметь свой crontab, а в системе также есть глобальный /etc/crontab. Демон cron читает эти файлы и выполняет команды в назначенное время.

Проверка статуса cron

systemctl status cron        # Debian/Ubuntu
systemctl status crond       # CentOS/AlmaLinux/Rocky

Если сервис не активен, запустите его:

systemctl enable --now cron

Синтаксис cron job

Каждая строка 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 текущего пользователя:

crontab -e

Для просмотра существующих задач:

crontab -l

Для редактирования crontab другого пользователя (от root):

crontab -u www-data -e

Совет: При первом запуске система спросит, какой редактор использовать. Выберите nano — он проще для начинающих.


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

1. Ежедневное резервное копирование базы данных MySQL

0 2 * * * /usr/bin/mysqldump -u root -pВАШ_ПАРОЛЬ база_данных > /backup/db_$(date +\%Y\%m\%d).sql

Задача запускается каждую ночь в 02:00 и сохраняет дамп базы данных. На VPS NVMe высокая скорость записи сокращает время резервного копирования.

2. Удаление старых временных файлов

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

Запускается каждое воскресенье в 03:00 и удаляет файлы из /tmp старше 7 дней.

3. Обновление SSL-сертификатов

0 0 1 * * /usr/bin/certbot renew --quiet && systemctl reload nginx

Проверяет и обновляет SSL-сертификаты в первый день каждого месяца. Незаменимо при использовании Let's Encrypt.

4. Отправка ежедневного отчёта об использовании диска

0 8 * * * /usr/bin/df -h | /usr/bin/mail -s "Отчёт диска $(hostname)" [email protected]

5. Запуск PHP-скрипта (например, для WordPress)

*/5 * * * * /usr/bin/php /var/www/html/wp-cron.php > /dev/null 2>&1

WordPress использует собственную систему cron, основанную на посещениях. Рекомендуется отключить WP-Cron и использовать системный cron — особенно на хостинге WordPress с высоким трафиком.


Переменные окружения в crontab

Cron запускается с минимальным окружением и не наследует переменные оболочки пользователя. Поэтому команды необходимо указывать с абсолютными путями.

В начале crontab можно определить глобальные переменные:

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
[email protected]
  • MAILTO — адрес для отправки вывода команд (установите "" для отключения писем).
  • PATH — пути для поиска команд.

Логирование вывода cron jobs

По умолчанию cron отправляет вывод по электронной почте. Лучшая практика — перенаправить вывод в лог-файлы:

0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
  • >> добавляет вывод в конец файла (не перезаписывает).
  • 2>&1 перенаправляет ошибки в тот же файл.

Чтобы лог-файлы не росли бесконечно, используйте logrotate — важный инструмент для администрирования Linux-серверов.


Системный cron: /etc/cron.d и директории cron.*

Помимо пользовательских 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 jobs

Неправильно настроенный cron может стать вектором атаки. Вот основные правила:

  1. Не запускайте скрипты от root без необходимости. Используйте пользователей с минимальными привилегиями.
  2. Проверяйте права доступа к скриптам. Скрипт с chmod 777 может изменить любой пользователь.
    bash chmod 700 /usr/local/bin/backup.sh chown root:root /usr/local/bin/backup.sh
  3. Не храните пароли в crontab. Используйте конфигурационные файлы с ограниченными правами (например, ~/.my.cnf для MySQL).
  4. Ограничьте доступ к cron с помощью /etc/cron.allow и /etc/cron.deny.
  5. Мониторьте логи cron:
    bash grep CRON /var/log/syslog # Ubuntu/Debian grep CRON /var/log/cron # CentOS/AlmaLinux

На управляемом выделенном сервере эти вопросы берёт на себя наша команда специалистов.


Устранение неполадок с cron jobs

Если задача не выполняется, проверьте следующее:

  • Неверный путь: Убедитесь, что все команды указаны с абсолютными путями.
  • Права доступа: Скрипт должен быть исполняемым (chmod +x script.sh).
  • Отсутствующие переменные окружения: Добавьте source ~/.bashrc в начало скрипта или определите PATH в crontab.
  • Синтаксические ошибки: Проверьте синтаксис через crontab -l и протестируйте команду вручную.
  • Сервис cron не запущен: Проверьте через systemctl status cron.
# Быстрый тест: запустить команду от имени пользователя cron
su -s /bin/bash www-data -c "/usr/bin/php /var/www/html/script.php"

Альтернатива: systemd timers

Современные дистрибутивы Linux (Ubuntu 20.04+, AlmaLinux 8+) предлагают systemd timers — более мощную альтернативу cron. Они позволяют:

  • Запускать задачи через относительные интервалы (например, «через 5 минут после загрузки»).
  • Интегрироваться с journald для централизованного логирования.
  • Настраивать зависимости между сервисами.

Тем не менее для большинства задач cron остаётся простым, портативным и вполне достаточным инструментом.


Заключение

Cron jobs — фундаментальный инструмент для любого системного администратора. Правильная настройка позволяет автоматизировать резервное копирование, обслуживание, отправку отчётов и многое другое — снижая вероятность ошибок и экономя часы ручного труда.

Для надёжного выполнения автоматизированных задач вам нужна стабильная платформа. VPS NVMe от CLIQHOST обеспечивает выделенные ресурсы, высокую скорость I/O и полный root-доступ. Нужна помощь с настройкой сервера? Ознакомьтесь с нашими услугами администрирования серверов или свяжитесь с нами — мы готовы помочь.

SHARE
// Что говорят наши клиенты

Что говорят наши клиенты

Реальные отзывы клиентов, которые доверяют 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."

AM
Andrei M.
eCommerce owner · Chișinău
★★★★★

"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."

EV
Elena V.
Web agency · Bălți
★★★★★

"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."

DC
Dmitri C.
SaaS founder · Chișinău