Планировщики
Планировщики задач — это утилиты операционных систем, позволяющие автоматически запускать скрипты, программы или команды по заданному расписанию. Они используются для регулярного выполнения технических операций: резервного копирования, синхронизации данных, очистки кэша, мониторинга состояния системы и т.п.
Ниже перечислены основные реализации планировщиков в популярных операционных системах и сторонние инструменты с краткими справочными данными.
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:
- Crontab UI (веб-интерфейс): https://github.com/alseambusher/crontab-ui
- GNOME Schedule (Linux): устаревший, но иногда используется
-
Кроссплатформенные инструменты:
- Tasker (Android): для автоматизации на мобильных устройствах
- Zapier / n8n: облачные/локальные оркестраторы для интеграций, включая расписание