Настройка cron и crontab в Ubuntu: автоматизация задач

Если ты хоть раз ловил себя на мысли «блин, опять руками запускать этот скрипт», то ты уже готов к знакомству с cron. Это встроенный планировщик задач в Linux, который позволяет автоматизировать рутину: бэкапы, очистку логов, обновления и вообще всё, что можно запихнуть в консольную команду. В Ubuntu cron и crontab — это must-have инструменты для любого, кто не хочет тратить жизнь на повторяющиеся задачи.

Возможности cron и crontab

  • Запускать скрипты и команды по расписанию (минуты, часы, дни недели, месяцы — любой гибрид).
  • Автоматизация резервного копирования, обновления, мониторинга и любых кастомных задач.
  • Работа как для отдельных пользователей, так и для системных задач (root).
  • Логи запусков и ошибок — удобно дебажить.

Что потребуется

  • Любая современная Ubuntu (16.04, 18.04, 20.04, 22.04 — всё ок).
  • Доступ в терминал (ssh или локально).
  • Права пользователя, для системных задач — sudo.
  • Железо не критично — cron работает даже на Raspberry Pi.

Установка cron в Ubuntu: пошагово

  1. Проверь, установлен ли cron:
    dpkg -l | grep cron

    Если ничего не выводит, значит надо ставить.

  2. Установка cron:
    sudo apt update
    sudo apt install cron

    Обычно cron уже есть в Ubuntu «из коробки», но вдруг…

  3. Запусти и добавь в автозагрузку:
    sudo systemctl enable --now cron

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

    systemctl status cron
  4. Проверь, что cron реально работает:
    ps aux | grep cron

    Должна быть строка вроде /usr/sbin/cron.

  5. Готово! Теперь можно работать с crontab.

Использование crontab: команды и варианты

  • Открыть crontab текущего пользователя:
    crontab -e

    Откроется редактор (обычно nano или vim).

  • Посмотреть текущие задания:
    crontab -l
  • Удалить все задания:
    crontab -r

    Осторожно! Безвозвратно.

  • Редактировать crontab для другого пользователя (только root):
    sudo crontab -u username -e
  • Системный crontab:
    sudo nano /etc/crontab

    Здесь можно явно указывать пользователя для каждой задачи.

Синтаксис строки задания:

* * * * * команда

Пять звёздочек — это минуты, часы, день месяца, месяц, день недели. Примеры:

  • 0 3 * * * /home/user/backup.sh — каждый день в 03:00
  • */10 * * * * /usr/bin/cleanup.sh — каждые 10 минут
  • 15 14 1 * * /home/user/report.sh — 1 числа каждого месяца в 14:15

Подробнее о синтаксисе: man crontab

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

В crontab по умолчанию минимальное окружение. Если нужен PATH или что-то ещё — пропиши явно в начале файла:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Логи cron

Логи ошибок и вывода команд можно отправить на почту или в файл:

0 4 * * * /home/user/script.sh >> /var/log/myscript.log 2>&1

Ошибки и как делать не надо

  • Не указываешь полный путь до скриптов и бинарей — cron не знает твой ~/.bashrc и PATH.
  • Скрипт работает вручную, но не через cron — почти всегда это переменные окружения или отсутствие прав на исполнение.
  • Забыл про chmod +x у скрипта.
  • Пихаешь интерактивные команды (типа read) — cron не умеет общаться с пользователем.
  • Не логируешь вывод — потом не найдёшь, почему не сработало.
  • Ставишь crontab -e под root, чтобы сделать задачу для пользователя — лучше использовать sudo crontab -u username -e или /etc/crontab.

Реальный пример использования

Допустим, ты хочешь делать бэкап базы данных каждый день в 2:30 ночи и складывать архив в отдельную папку.

  1. Пишешь скрипт /home/user/backup_db.sh:
    #!/bin/bash
    DATE=$(date +%F)
    mysqldump -u root -pYourPass dbname | gzip > /home/user/backups/db_$DATE.sql.gz

    Не забудь chmod +x /home/user/backup_db.sh

  2. Добавляешь в crontab:
    crontab -e

    И вставляешь строку:

    30 2 * * * /home/user/backup_db.sh >> /home/user/backups/backup.log 2>&1
  3. Всё, теперь бэкапы будут делаться сами, а если что-то пошло не так — посмотришь backup.log.

Заключение

Cron — это самый простой путь к автоматизации в Linux. Главное — не забывай про окружение, логи и права. Потренируйся на простых задачах, и ты быстро поймёшь, как это круто экономит время. Официальная дока: Ubuntu Cron HowTo и man crontab.

Если есть вопросы — смотри man cron и man crontab, ну и гугли примеры, их море на StackOverflow и Reddit.

Хотите прочитать больше про Администрирование?
Отзывов нет.

Ваш отзыв

Пожалуйста, заполните поля снизу и добавьте отзыв!.
Имя *
E-mail *
Сайт
Сообщение *