Планировщик задач в systemd ⏰

Планировщик задач в systemd ⏰

LinuPark 🧙‍♂️
Cron хорошо, но есть и другие...

Systemd Timers — это unit-файл, предназначенный для планирования запуска другого сервиса. Когда срабатывает таймер, соответствующий сервис запускается.


Основные параметры:

Simple

Таймер активируется через заданное количество секунд после загрузки системы.
OnActiveSec=60s


Calendar

Запускается в определённое время календаря.
OnCalendar=*-*-* 18:00:00


Monotonic

Активирует событие относительно предыдущего события
OnBootSec=1h

OnActiveSec — срабатывает после активации юнита (systemd-сервиса).

OnBootSec — срабатывает после запуска всей системы.

OnStartupSec — срабатывает после запуска менеджера сервисов.

OnUnitActiveSec — срабатывает после последнего запуска юнита.

OnUnitInactiveSec — срабатывает после последней остановки сервиса.


ConditionPathExists

Активирует событие если существует файл /usr/local/bin/my_backup_script.sh
ConditionPathExists=/usr/local/bin/my_backup_script.sh


RandomizedDelaySec

Использовать случайную задержку перед запуском
RandomizedDelaySec=300


Создадим юнит-service, который будет вызывать скрипт резервного копирования /usr/local/bin/my_backup_script.sh


nano /etc/systemd/system/backup.service


Добавим параметры:

[Unit]
Description=Служба резервного копирования

[Service]
Type=simple
ExecStart=/usr/local/bin/my_backup_script.sh

(Ctrl + o - сохранить, Ctrl + x - выйти)


Создаем юнит-timer файл backup.timer

nano /etc/systemd/system/backup.timer


Добавляем:

[Unit]
Description=Запуск службы каждый день в полночь

[Timer]
OnCalendar=*-*-* 00:00:00
Persistent=true # задача выполнится при загрузке, если была пропущена

[Install]
WantedBy=timers.target

(Ctrl + o - сохранить, Ctrl + x - выйти)


Включаем и проверяем работу таймера

Для активации наших таймеров выполните команды:

systemctl daemon-reload
systemctl enable backup.timer
systemctl start backup.timer


Проверить состояние таймера можно командой:

systemctl list-timers | grep backup


Это покажет следующее запланированное выполнение созданного таймера.


✍️ Подпишись, поддержи канал

Report Page