Планировщики

Планировщики задач запускают скрипты, программы и команды без вашего участия — по расписанию или событию. Ими закрывают рутину: бэкапы, ротацию логов, синхронизацию, health-check, ночные отчёты.

Классическая модель Unix — cron: пять полей (минута, час, день месяца, месяц, день недели) и команда. В современном Linux часто рядом живут systemd timers; в Windows — Task Scheduler; в macOS — launchd. Для сложных DAG в продакшене добавляют Airflow, Celery Beat, Jenkins.

Как читать cron

`` — "каждый"; `/15` — шаг; `1-5` в поле дня недели — понедельник–пятница (0 и 7 = воскресенье). Строка в `crontab` всегда заканчивается командой с полным путём к интерпретатору или скрипту.


1. cron (Unix, Linux, macOS)

Стандартный демон планирования в Unix-подобных системах. Расписание задаётся cron-выражением из пяти полей.

Установка (если нет в системе):

# Debian/Ubuntu
sudo apt install cron

# RHEL/CentOS/Fedora
sudo dnf install cronie

Настройка: crontab -e — таблица заданий текущего пользователя.

Формат строки:

минута час день_месяца месяц день_недели команда

Пример:

0 2 * * * /home/user/backup.sh   # ежедневно в 02:00

Документация: man 5 crontab, Ubuntu CronHowto


2. systemd Timers (Linux с systemd)

Замена и дополнение cron в системах на systemd: юниты .timer + .service, OnCalendar, Persistent=true (догон пропущенного запуска после простоя).

Установка: входит в systemd (Debian ≥ 8, Ubuntu ≥ 15.04, RHEL ≥ 7).

Пример:

# /etc/systemd/system/backup.service
[Unit]
Description=Backup script

[Service]
ExecStart=/home/user/backup.sh
# /etc/systemd/system/backup.timer
[Unit]
Description=Run backup daily

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

Активация:

sudo systemctl enable --now backup.timer
systemctl list-timers   # список активных таймеров

Документация: systemd.timer


3. Task Scheduler (Windows)

Встроенный планировщик с GUI и CLI (schtasks, PowerShell Register-ScheduledTask).

Доступ: Панель управления → Администрирование → Планировщик заданий.

Пример CLI:

schtasks /create /tn "NightlyBackup" /tr "C:\Scripts\backup.bat" /sc daily /st 02:00

Документация: Task Scheduler (Microsoft Learn)


4. launchd (macOS)

Система инициализации и планирования macOS. Задания — plist в ~/Library/LaunchAgents/ (пользователь) или /Library/LaunchDaemons/ (система).

Пример фрагмента plist:

<key>StartCalendarInterval</key>
<dict>
    <key>Hour</key><integer>2</integer>
    <key>Minute</key><integer>0</integer>
</dict>

Загрузка: launchctl load ~/Library/LaunchAgents/local.backup.plist

Документация: Creating Launch Daemons and Agents


5. at (однократный запуск)

Запуск команды один раз в указанное время.

sudo apt install at    # Debian/Ubuntu
echo "/home/user/script.sh" | at 18:00

Документация: man at


6. Anacron (ноутбуки и ПК с простоями)

Дополнение к cron: если машина была выключена, задание выполнится при следующем включении.

Конфиг /etc/anacrontab:

1	5	cron.daily	run-parts --report /etc/cron.daily

7. Celery Beat (Python, веб-стек)

Периодические асинхронные задачи в Django/Flask и др.

pip install "celery[redis]"
from celery import Celery
from celery.schedules import crontab

app = Celery('tasks', broker='redis://localhost:6379/0')
app.conf.beat_schedule = {
    'nightly-backup': {
        'task': 'tasks.backup',
        'schedule': crontab(hour=2, minute=0),
    },
}

Документация: Celery Periodic Tasks


8. PowerShell Scheduled Jobs

Register-ScheduledJob -Name NightlyBackup `
  -ScriptBlock { & "C:\Scripts\backup.ps1" } `
  -Trigger (New-JobTrigger -Daily -At "2:00AM")

Документация: about_Scheduled_Jobs


9. Jenkins и 10. Airflow (оркестрация)

Инструмент Когда уместен
Jenkins CI/CD, сборки, деплой; расписание через cron-триггер job
Apache Airflow DAG из зависимых задач, SLA, ретраи, UI для data/platform-команд
docker run -p 8080:8080 jenkins/jenkins:lts
pip install apache-airflow

Дополнительно

  • GUI для cron: Crontab UI
  • Интеграции без кода: Zapier, n8n (self-hosted), Make — расписание + вебхуки
  • Мобильные сценарии: Tasker (Android)
Связанные темы

Shell-скрипты и PowerShell — в разделах языков

пайплайны CI/CD — в DevOps и CI/CD

планирование на сервере — в системном администрировании.


См. также