Планировщик задач (Cron)

Cron — это классический системный демон (планировщик) в Linux, который автоматически выполняет заданные команды или скрипты по расписанию.

В нашей инфраструктуре он используется для автоматизации рутины: ежеминутной сборки этой Wiki из Markdown (через MkDocs) и еженедельного обновления Docker-контейнеров (например, NPMplus).

🕒 Синтаксис расписания

Расписание задается пятью параметрами, разделенными пробелами. Они читаются слева направо:

* * * * * выполняемая команда
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └─ День недели (0 - 7) (0 и 7 — это воскресенье, 1 — понедельник)
│ │ │ └─── Месяц (1 - 12)
│ │ └───── День месяца (1 - 31)
│ └─────── Часы (0 - 23)
└───────── Минуты (0 - 59)

Звездочка * означает «каждый» (каждую минуту, каждый час и т.д.).

📋 Полезные примеры и шаблоны

  • * * * * * — Каждую минуту (используется для сборки Wiki).
  • 0 3 * * 0 — Каждое воскресенье в 03:00 ночи (используется для обновления Docker-образов).
  • 0 4 * * * — Каждый день в 04:00 ночи.
  • 0 3 * * 3,0 — Дважды в неделю (в среду и воскресенье в 03:00).
  • 0 2,14 * * * — Каждые 12 часов (в 02:00 и 14:00).
  • 0 3 1 * * — Раз в месяц (каждое 1-е число в 03:00).

💡 Лайфхак: Для быстрой расшифровки или создания сложных расписаний используй сервис crontab.guru. Он переводит символы Cron на простой человеческий язык.

🛠 Управление и команды

Для управления своими задачами используются следующие команды в консоли (SSH или оболочка Proxmox):

  • crontab -e — Открыть файл расписания для редактирования.
  • crontab -l — Посмотреть текущий список запланированных задач (без редактирования).

Перезапуск службы (если задачи не подхватились):

  • В контейнерах Alpine (например, Wiki): rc-service crond restart
  • В контейнерах Debian/Ubuntu: systemctl restart cron