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

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

Планировщики задач — это утилиты операционных систем, позволяющие автоматически запускать скрипты, программы или команды по заданному расписанию. Они используются для регулярного выполнения технических операций: резервного копирования, синхронизации данных, очистки кэша, мониторинга состояния системы и т.п.

Ниже перечислены основные реализации планировщиков в популярных операционных системах и сторонние инструменты с краткими справочными данными.


1. cron (Unix, Linux, macOS)

Описание:
Стандартный демон планирования в Unix-подобных системах. Поддерживает гибкое расписание с помощью cron-выражений.

Установка:
Обычно предустановлен в большинстве дистрибутивов. При отсутствии:

# Debian/Ubuntu
sudo apt install cron

# RHEL/CentOS/Fedora
sudo dnf install cronie # или sudo yum install cronie

Настройка:
Редактирование заданий:

crontab -e

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

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

Пример:

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

Официальная документация:


2. systemd Timers (Linux с systemd)

Описание:
Современная замена cron в системах, управляемых systemd. Позволяет интегрировать задания с юнитами systemd, поддерживает монотонные таймеры и более точную синхронизацию.

Установка:
Входит в состав systemd, уже присутствует в большинстве дистрибутивов (Debian ≥8, Ubuntu ≥15.04, RHEL ≥7 и др.).

Настройка:
Требуется создать два файла: .service и .timer.

Пример:

# /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

Официальная документация:


3. Task Scheduler (Windows)

Описание:
Встроенный графический и программный интерфейс планирования задач в Windows (начиная с Windows 2000).

Доступ:

  • Графически: Панель управления → Система и безопасность → Администрирование → Планировщик заданий
  • Через PowerShell/CLI: schtasks.exe

Пример команды CLI:

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

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


4. launchd (macOS)

Описание:
Система инициализации и планирования в macOS. Заменяет cron и других демонов.

Настройка:
Задания описываются в XML-файлах (plist) и размещаются в ~/Library/LaunchAgents/ (пользовательские) или /Library/LaunchDaemons/ (системные).

Пример plist (~/Library/LaunchAgents/local.backup.plist):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>local.backup</string>
<key>ProgramArguments</key>
<array>
<string>/Users/user/backup.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key><integer>2</integer>
<key>Minute</key><integer>0</integer>
</dict>
</dict>
</plist>

Загрузка:

launchctl load ~/Library/LaunchAgents/local.backup.plist

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


5. at (Unix/Linux/macOS)

Описание:
Утилита для однократного выполнения задачи в заданное время.

Установка:

# Debian/Ubuntu
sudo apt install at

# RHEL/Fedora
sudo dnf install at

Пример:

echo "/home/user/script.sh" | at 18:00

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


6. Anacron (Linux)

Описание:
Расширение cron для систем, которые не работают постоянно (например, ноутбуки). Обеспечивает выполнение отложенных заданий при следующем запуске.

Установка:

sudo apt install anacron  # Debian/Ubuntu

Конфигурация:
Файл /etc/anacrontab:

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

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


7. Celery Beat (Python)

Описание:
Компонент фреймворка Celery для периодического запуска асинхронных задач. Используется в веб-приложениях (Django, Flask).

Установка:

pip install celery[redis]  # или [rabbitmq]

Пример конфигурации:

from celery import Celery

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

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


8. Windows PowerShell Scheduled Jobs

Описание:
Встроенный механизм Windows PowerShell для создания и управления заданиями через PowerShell.

Пример:

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

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


9. Jenkins (кроссплатформенный CI/CD)

Описание:
Хотя Jenkins изначально предназначен для непрерывной интеграции, он может использоваться как продвинутый планировщик с веб-интерфейсом, логированием и зависимостями.

Установка:

# Через Docker
docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts

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


10. Airflow (Python, кроссплатформенный)

Описание:
Платформа для оркестрации сложных рабочих процессов с поддержкой DAG-графов и планирования.

Установка:

pip install apache-airflow

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


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

  • GUI-обёртки для cron:

  • Кроссплатформенные инструменты:

    • Tasker (Android): для автоматизации на мобильных устройствах
    • Zapier / n8n: облачные/локальные оркестраторы для интеграций, включая расписание