Linux

Настройка планировщика Cron в Linux: пошаговая инструкция

Узнайте, как безопасно создавать и управлять фоновыми задачами в Linux через cron. Вы получите готовые шаблоны расписаний и научитесь диагностировать сбои.

Обновлено 4 апреля 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 22.04 / 24.04 LTSDebian 11 / 12RHEL / CentOS / AlmaLinux 8 / 9openSUSE Leap 15.5+

Зачем нужен планировщик Cron

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

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

Перед началом работы убедитесь, что у вас есть доступ к терминалу сервера или виртуальной машины. Для управления системными задачами потребуются права суперпользователя (root или sudo). Убедитесь, что служба cron активна. В большинстве современных дистрибутивов она включена по умолчанию, но проверить статус можно командой:

systemctl status cron   # Для Debian/Ubuntu
# или
systemctl status crond  # Для RHEL/CentOS/AlmaLinux

Если служба остановлена, запустите её через sudo systemctl enable --now cron.

Шаг 1: Открытие конфигурационного файла

Для редактирования личного расписания текущего пользователя выполните в терминале:

crontab -e

При первом запуске система предложит выбрать текстовый редактор. Для быстрой работы рекомендуется nano (управление через Ctrl+O для сохранения и Ctrl+X для выхода). Если вы хотите настроить задачи для конкретного пользователя, используйте флаг -u: sudo crontab -u username -e.

Шаг 2: Понимание синтаксиса расписания

Каждая строка в файле crontab описывает одно задание. Формат строго фиксирован и состоит из пяти полей времени, за которыми следует команда:

минута час день_месяца месяц день_недели команда

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

  • */5 * * * * — каждые 5 минут.
  • 0 2 * * * — ежедневно в 02:00.
  • 30 1 1,15 * * — первого и пятнадцатого числа каждого месяца в 01:30.

Шаг 3: Создание и сохранение задачи

Перейдите в конец файла и добавьте новую строку. Всегда указывайте абсолютные пути к исполняемым файлам и скриптам, так как cron работает в минимальном окружении и не читает системные переменные $PATH.

# Ежедневный экспорт базы данных в 03:00
0 3 * * * /usr/bin/pg_dump mydb > /home/user/backups/db_$(date +\%F).sql 2>&1

После добавления строки сохраните файл и закройте редактор. Cron автоматически перезагрузит конфигурацию и выведет сообщение crontab: installing new crontab. Дополнительный запуск служб не требуется.

Проверка работы задания

Убедиться, что задача успешно добавлена в очередь, можно командой:

crontab -l

Для отслеживания запуска и ошибок демона просматривайте системный журнал. В Ubuntu/Debian используйте sudo grep CRON /var/log/syslog, а в RHEL-семействе — sudo grep CRON /var/log/cron. Если вывод показывает успешное выполнение, но результат отсутствует, перенаправьте вывод скрипта в отдельный лог-файл для детальной отладки: >> /var/log/my_task.log 2>&1.

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

  • Задание не запускается. Проверьте права на выполнение файла: chmod +x /путь/к/скрипту.sh. Также убедитесь, что в самом начале скрипта указан корректный интерпретатор (shebang), например #!/bin/bash.
  • Ошибки окружения и путей. Cron не подгружает пользовательские переменные. Объявляйте их явно в самом скрипте или в начале crontab: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin.
  • Конфликт или дублирование процессов. Если скрипт выполняется дольше интервала запуска, могут накопиться параллельные экземпляры. Разнесите их по времени или используйте утилиту flock, чтобы гарантировать однопоточное выполнение.

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

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

Полезное

Открытие конфигурационного файла
Изучение синтаксиса расписания
Добавление и сохранение задачи

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