Введение / Зачем это нужно
Команда crontab — это основной инструмент для автоматизации задач в Linux. С её помощью можно планировать выполнение скриптов, команд и других действий по заданному расписанию. После изучения этого гайда вы сможете настраивать cron-задачи, редактировать таблицы и быстро устранять типичные ошибки, что значительно ускорит вашу работу с системой.
Требования / Подготовка
- ОС: Ubuntu 22.04, Debian 12, CentOS 8 (или другая дистрибутивная версия с пакетом cron).
- Права администратора (
sudo), если вы работаете с системным/etc/crontab. - Базовые знания shell-команд и работы с текстовым редактором (например,
nanoилиvim). - Установленный пакет
cron(если нет — он уже включён в базовый образ большинства дистрибутивов).
Пошаговая инструкция
Шаг 1: Установка и включение службы cron
Убедитесь, что пакет cron установлен. На Ubuntu/Debian выполните:
sudo apt update && sudo apt install -y cron
На CentOS/RHEL:
sudo yum install -y cronie
После установки запустите службу и сделайте её постоянной:
sudo systemctl start cron
sudo systemctl enable cron
Шаг 2: Редактирование таблицы crontab
Для редактирования персональной таблицы crontab используйте:
crontab -e
Система использует редактор по умолчанию (nano в большинстве случаев). Сохраните изменения и выйдите из редактора.
Если вам нужен системный конфигурационный файл, откройте /etc/crontab:
sudo nano /etc/crontab
Изменения в этом файле применяются автоматически (сервис cron считывает его при запуске).
Шаг 3: Создание задания с примерами
Добавляйте строки в формате:
* * * * * команда
Где * * * * * — это минуты, часы, день месяца, месяц, день недели соответственно.
Пример 1: Резервное копирование каждый день в 02:00:
0 2 * * * /usr/bin/rsync /source/ /backup/
Пример 2: Выполнение скрипта каждую минуту:
* * * * * /home/user/script.sh
Сохраните таблицу (Ctrl+X, Y, Enter в nano).
Шаг 4: Проверка и устранение распространённых ошибок
- Посмотрите активные задания:
crontab -l
- В режиме реального времени просмотрите журнал cron:
sudo journalctl -u cron -f
- Проверьте
/var/log/cron.logна наличие ошибок.
Если задача не срабатывает, перепроверьте синтаксис, используя:
crontab -l | crontab -
Эта команда парсит таблицу и покажет ошибки в формате crontab.
Проверка результата
- Добавьте задание, которое выводит сообщение, например:
* * * * * echo "Cron-задание выполнено в $(date)"
- Подождите одну минуту и проверьте вывод в терминале, где запущен cron (или в
/var/log/cron.log). - Если вывод отображается, задание работает корректно.
Возможные проблемы
- Сервис cron не запущен: выполните
sudo systemctl start cronиsudo systemctl enable cron. - Таблица crontab пуста: убедитесь, что файл не пуст (
crontab -lне выводит содержимое). - Неправильные права доступа: проверьте владельца и разрешения файлов (
/etc/crontab,/var/spool/cron). - Неверный синтаксис таймфрейма: используйте валидаторы, например,
man 5 crontabили онлайн‑проверщики.