Генератор Crontab: собираем расписание без ручной маски

В Linux и UNIX задачи по расписанию почти всегда упираются в crontab: бэкапы, проверки, синхронизации, отчёты. Синтаксис короткий, но не интуитивный: ошибка в одном поле, и job едет не в то время. Генератор Crontab собирает готовую строку из полей формы, чтобы не считать маску вручную.

Что такое crontab

Crontab – таблица заданий пользователя (или системные файлы в /etc/cron.*), где каждая строка описывает когда и что запускать. Точность – до минуты. Типичные сценарии:

  • регулярные бэкапы и дампы БД;
  • мониторинг и health-check скрипты;
  • синхронизация данных, очистка логов, ротация артефактов;
  • отправка отчётов и уведомлений по расписанию.

Пять временных полей (минута, час, день месяца, месяц, день недели) плюс команда. Неверная цифра или забытый путь к интерпретатору – и job либо молчит, либо стреляет слишком часто.

Как работает генератор

На странице генератора заполняются поля:

  • Минута – например 15 (в 15-ю минуту часа) или */5 (каждые 5 минут);
  • Час – час запуска (0-23);
  • День месяца – число (1-31) или *;
  • Месяц – 1-12 или список месяцев;
  • День недели – 0-7 (воскресенье часто и 0, и 7) или диапазон;
  • Команда – полный путь к скрипту или бинарнику: php, wget, shell-скрипт.

Кнопка «Сгенерировать Crontab» отдаёт готовую строку. Её остаётся вставить в crontab -e или в системный cron-файл.

Примеры на разных системах

Ubuntu / Debian

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

crontab -e

Скрипт каждый день в 02:30:

30 2 * * * /usr/bin/php /var/www/mysite/cron.php

Сохранить и выйти из редактора. Список текущих jobs: crontab -l.

CentOS / RHEL

Тот же crontab -e. Пример: каждую пятницу в 06:00 скачать файл:

0 6 * * 5 /usr/bin/wget http://example.com/file.zip -O /var/backups/file.zip

Arch Linux

Аналогично. Дамп MySQL/MariaDB каждый день в полночь:

0 0 * * * /usr/bin/mysqldump -u root -p mydatabase > /var/backups/mydatabase.sql

Пароль в crontab в открытом виде – плохая практика. Лучше defaults-file, socket auth или отдельный user с ограниченными правами.

Практические замечания

  • В cron урезанный PATH. Пишите полные пути к бинарникам (/usr/bin/php, /usr/bin/wget).
  • Вывод job лучше перенаправлять в лог или на MAILTO, иначе важные ошибки теряются.
  • Совпадение дня месяца и дня недели работает по правилам cron (логическое ИЛИ). Если нужно строго «1-е число и только понедельник», смотрите документацию или systemd timers.
  • Для сложных календарей иногда проще systemd.timer, но crontab по-прежнему везде и понятен.

Зачем генератор

  • меньше опечаток в пяти полях времени;
  • быстрее собрать нестандартное расписание;
  • удобно для новичков и для редких jobs, которые пишешь раз в полгода.

Инструмент: generator-crontab. Сгенерировали строку, вставили в crontab, проверили лог первого запуска – на этом обычно всё.

Источники и ссылки


Комментарии загружаются…