Linux

Полное руководство по настройке cron в Linux для автоматизации задач

Cron — это встроенный планировщик задач в Linux. В этом гайде вы научитесь настраивать cron-задачи, редактировать таблицы и отлаживать проблемы. После выполнения инструкции ваши задачи будут запускаться автоматически.

Обновлено 12 июля 2026 г.
5-10 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04Debian 11CentOS 8

Введение

Cron — это стандартный планировщик задач в Linux, который позволяет автоматически запускать скрипты, команды или другие программы по заданному расписанию. Настройка cron позволяет автоматизировать рутинные операции: резервное копирование данных, обновление системных логов, отправку отчетов и многое другое. После выполнения этого гайда вы сможете создавать как личные, так и системные задачи, а также отлавливать распространенные ошибки.

Требования / Подготовка

  • Любая современная Linux‑дистрибутивная система (в статье приведены примеры для Ubuntu, Debian и CentOS).
  • Права администратора (sudo), чтобы устанавливать пакеты и редактировать таблицы cron.
  • Установленный текстовый редактор (nano или vim); если редактора нет, он будет установлен автоматически.
  • Базовое знание синтаксиса таблиц cron (пять полей времени + команда).

Пошаговая инструкция

Шаг 1: Установка и запуск cron-сервиса

Убедитесь, что cron уже установлен. В Debian‑based системах выполните:

sudo apt update
sudo apt install cron

В RedHat‑based дистрибутивах:

sudo yum install cronie

Запустите службу и включите автозапуск:

sudo systemctl start cron
sudo systemctl enable cron

Проверьте статус:

systemctl status cron

Шаг 2: Редактирование личной таблицы crontab

Для настройки задач, относящихся к вашему пользователю, отредакруйте таблицу crontab:

crontab -e

В первом запуске выберите редактор (например, nano). Добавьте задачу, например, для ежедневного резервного копирования базы данных в 02:00 ночи:

0 2 * * * /path/to/backup.sh >> /var/log/backup.log 2>&1

Сохраните файл и выйдите. Таблица cron будет автоматически загружена системой.

Шаг 3: Создание системной задачи в /etc/cron.d

Системные задачи находятся в /etc/cron.d. Создайте файл, например, /etc/cron.d/nightly-cleanup:

# Ежедневная очистка логов в 3:30 ночи
30 3 * * * root /usr/local/bin/clean_logs.sh >> /var/log/cleanup.log 2>&1

Назначьте права для безопасности:

chmod 644 /etc/cron.d/nightly-cleanup

Система будет запускать эти задачи от указанного пользователя (root в данном случае) без необходимости редактирования пользовательской таблицы crontab.

Шаг 4: Проверка списка задач и логов

Чтобы убедиться, что задачи зарегистрированы, выполните:

crontab -l          # ваши личные задачи
ls -l /etc/cron.*   # системные таблицы
ls -l /etc/cron.d   # системные задачи

Отслеживайте работу cron:

journalctl -u cron -f   # в системах с systemd
# или
grep CRON /var/log/syslog

Если задача выполняется, в логах появится запись наподобие CRON[12345]: (root) CMD ( /path/to/script.sh ).

Проверка результата

  1. Подождите ближайшее запланированное время выполнения задачи или запустите её принудительно, добавив * * * * * в тестовом задании.
  2. Проверьте выходные данные: если задача пишет в файл, убедитесь, что файл обновляется (tail -f /var/log/backup.log).
  3. Проверьте системные логи, чтобы убедиться, что cron сообщил об успешном выполнении задачи.

Возможные проблемы

  • Ошибка доступа: cron не может выполнить задачу, если у скрипта нет прав на выполнение (chmod +x /path/to/script.sh).
  • Синтаксис таблицы: проверьте правильность полей времени и отсутствия лишних пробелов. Ошибки часто скрыты в табуляциях — используйте crontab -l | crontab --check.
  • Задачи не запускаются: убедитесь, что cron работает (systemctl status cron). Перезапустите службу: sudo systemctl restart cron.
  • Дублирующиеся задачи: перед добавлением новой задачи проверьте существующие (crontab -l) и системные задачи (ls -l /etc/cron.d).

Если задача по-прежнему не работает, запустите cron в отладочном режиме:

sudo systemctl status cron
sudo journalctl -u cron -b

Эти команды покажут точную причину сбоя и помогут устранить проблему.

Часто задаваемые вопросы

Как запустить cron-демон в системе?
Как проверить синтаксис таблицы crontab перед сохранением?
Как настроить задачу, которая записывает вывод в лог-файл?
Как временно отключить конкретную задачу cron?

Полезное

Установка и запуск cron-сервиса
Редактирование личной таблицы crontab
Создание системной задачи в /etc/cron.d
Проверка списка задач и логов

Эта статья помогла вам решить проблему?