Перейти к основному содержимому

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

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

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

Загрузка планировщика…

:::tip Как читать 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 (оркестрация)

ИнструментКогда уместен
JenkinsCI/CD, сборки, деплой; расписание через cron-триггер job
Apache AirflowDAG из зависимых задач, 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)

:::info Связанные темы Shell-скрипты и PowerShell — в разделах языков; пайплайны CI/CD — в DevOps энциклопедии. :::

См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).