Введение
Cron — это встроенный планировщик задач в Ubuntu, который позволяет запускать скрипты, команды или служебные процедуры автоматически по расписанию. Настройка cron-задач помогает автоматизировать рутинные операции, такие как резервное копирование, очистка логов, отправка уведомлений и обновление системных конфигураций. После выполнения этого руководства вы сможете создавать, редактировать и контролировать cron-задачи в supported версиях Ubuntu.
Требования / Подготовка
- Поддерживаемая версия Ubuntu (20.04 LTS, 22.04 LTS, 24.04 LTS).
- Права суперпользователя (
sudo), необходимые для управления службой cron. - Доступ к командной строке (терминал).
- Служба cron обычно установлена по умолчанию, но если её нет, установите её с помощью
sudo apt install cron.
Пошаговая инструкция
- Включить и запустить службу cron
Убедитесь, что служба работает и будет запускаться автоматически при каждой загрузке системы.sudo systemctl enable --now cron - Открыть редактор crontab
Для редактирования текущих заданий пользователя используется командаcrontab -e.crontab -e
Система предложит выбрать текстовый редактор (обычно nano). Откройте файл для редактирования. - Добавить новую задачу cron
Вставьте строку задачи, например, ежедневное выполнение скрипта резервного копирования в 02:00 ночи:0 2 * * * /home/user/backup.sh
Формат:<минута> <час> <день_месяца> <месяц> <день_недели> <команда>. Используйте звёздочку (*), чтобы указать «каждый» показатель, а слэш (/) для указания интервалов. - Настроить права и переменные окружения
- Если скрипт требует elevated прав, добавьте
sudoв команду:0 2 * * * sudo /home/user/backup.sh - Для заданий, требующих конкретных переменных окружения, добавьте их в начало файла crontab:
SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOME=/home/user
Сохраните изменения, выйдя из редактора (Ctrl+O,Enterв nano). - Если скрипт требует elevated прав, добавьте
- Проверить задачу и активировать её
- Проверьте изменения с помощью
crontab -l:crontab -l - Просмотрите журнал cron, чтобы убедиться, что служба запускает задачу:
journalctl -u cron -f
Вы увидите записи типаCRON/jobnameпри запуске каждой задачи.
- Проверьте изменения с помощью
Проверка результата
- Список заданий:
crontab -lдолжен отображать добавленные строки. - Логи выполнения: Запустите
grep CRON /var/log/syslog(илиjournalctl -u cron), чтобы найти записи о выполнении задач. - Ручная проверка: Запустите скрипт напрямую (
/home/user/backup.sh), чтобы убедиться, что он работает корректно.
Возможные проблемы
- Ошибка «права доступа запрещены». Убедитесь, что вы используете
sudoдля редактирования crontab (sudo crontab -e) и что скрипт доступен для чтения (chmod +x /path/to/script). - Задача не выполняется. Проверьте синтаксис (например, лишние пробелы), убедитесь, что команда имеет исполнительный бит, и проверьте поле
PATHв crontab. - Cron не работает. Проверьте статус службы:
systemctl status cron. Если служба остановлена, запуститеsudo systemctl restart cron. - Отсутствие переменных окружения. Если скрипт не видит необходимые переменные, добавьте их в crontab, как показано в шаге 4.
⚠️ Важно: Храните конфиденциальные данные (пароли, ключи API) вне файла crontab; используйте файлы переменных окружения (
.env) или ключевые сервисы systemd.
💡 Совет: Для сложных заданий рассмотрите возможность использования
/etc/cron.d/для управления заданиями на уровне системы, что обеспечивает лучший контроль и регистрацию.