В этой статье
Что такое Crontab?
Crontab (таблица cron) — это планировщик задач на основе времени в Unix-подобных операционных системах. Он позволяет планировать автоматическое выполнение команд или скриптов через заданные интервалы.
Каждый пользователь системы может иметь собственный файл crontab. Файл содержит список задач cron, где каждая строка определяет расписание с помощью пятипольного временного выражения.
Синтаксис выражений Cron
Выражение cron состоит из пяти полей, разделённых пробелами:
- Минута (0-59) — указывает, на какой минуте должна запуститься задача
- Час (0-23) — указывает час в 24-часовом формате
- День месяца (1-31) — указывает день месяца
- Месяц (1-12) — указывает месяц года
- День недели (0-7, где 0 и 7 — воскресенье)
Специальные символы: * (любое значение), / (шаговые значения), - (диапазоны) и запятая (списки).
Распространённые шаблоны Cron
Наиболее часто используемые выражения cron:
- */5 * * * * — каждые 5 минут, обычно для проверок состояния
- 0 * * * * — каждый час на 0-й минуте
- 0 0 * * * — ежедневно в полночь, стандарт для резервного копирования
- 0 0 * * 1-5 — каждый рабочий день в полночь
- 0 0 1 * * — первый день каждого месяца в полночь
- 0 9,17 * * 1-5 — в 9:00 и 17:00 в рабочие дни
Попробуйте бесплатно — без регистрации
Создать выражение Cron →Распространённые варианты использования
Задачи cron автоматизируют практически любую повторяющуюся системную задачу:
- Ротация и очистка логов — автоматическое сжатие или удаление старых файлов логов
- Резервное копирование базы данных — планирование регулярных команд резервного копирования
- Генерация отчётов — составление ежедневных, еженедельных или ежемесячных отчётов
- Очистка кеша — периодическое удаление устаревших записей кеша
- Мониторинг системы — выполнение проверок состояния через регулярные интервалы
Советы и подводные камни
Даже опытные разработчики сталкиваются с типичными проблемами cron:
- Часовые пояса — cron по умолчанию использует системный часовой пояс. Установите TZ или используйте UTC
- Перекрывающиеся задачи — используйте flock для предотвращения одновременного запуска нескольких экземпляров
- Проблемы с PATH — cron работает с минимальным окружением. Всегда используйте абсолютные пути
- Обработка вывода — cron по умолчанию отправляет stdout и stderr по электронной почте. Перенаправьте в файл лога
- Отладка — проверяйте /var/log/syslog или /var/log/cron
Часто задаваемые вопросы
Может ли cron планировать задачи с точностью до секунды?
Стандартный cron не поддерживает секунды. Используйте обходные пути или переключитесь на таймеры systemd.
В чём разница между cron и таймерами systemd?
Cron — традиционный планировщик Unix. Таймеры systemd предлагают точность менее минуты и лучшее логирование, но специфичны для Linux.
Как протестировать задачу cron?
Сначала выполните команду вручную, затем смоделируйте среду cron с помощью env -i, и наконец запланируйте выполнение каждую минуту для проверки.