Timer

Материал из Rosalab Wiki
Версия от 13:01, 10 марта 2023; Mikhailnov (обсуждение | вклад) (Новая страница: «= Выполнение задач по расписанию = == Введение == Эта статья описывает, как выполнять задач…»)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Это снимок страницы. Он включает старые, но не удалённые версии шаблонов и изображений.
Перейти к: навигация, поиск

Выполнение задач по расписанию

Введение

Эта статья описывает, как выполнять задачи по расписанию в операционных системах ROSA Fresh/Хром.

Таймеры systemd

Systemd timer — это компонент systemd, который позволяет запускать задачи (unit) в определенное время или с определенной периодичностью.

Таймеры systemd полезны для автоматизации запуска определенных задач на сервере в заданные моменты времени или с определенной периодичностью, в зависимости от потребностей.

Отличие systemd timer от cron заключается в том, что в случае с timer systemd полностью контролирует выполнение задачи, позволяет ее досрочно остановить, запоминает статус исполнения, предотвращает дубликаты (например, запуск нового экземпляра задачи, когда как еще не остановился предыдущий).

Пример настройки systemd timer для запуска скрипта каждый день в 3 часа утра:

Создайте файл таймера в каталоге /etc/systemd/system/ с расширением .timer, например myscript.timer:

[Unit]
Description=My script timer

[Timer]
OnCalendar=*-*-* 03:00:00
Unit=myscript.service

[Install]
WantedBy=timers.target

Создайте файл сервиса для запуска скрипта, например myscript.service:

[Unit]
Description=My script

[Service]
ExecStart=/path/to/myscript.sh

Запустите и активируйте таймер:

sudo systemctl daemon-reload
sudo systemctl enable myscript.timer
sudo systemctl start myscript.timer

Еще несколько примеров значений параметра OnCalendar, задающего периодичность запуска задачи:

  • Запуск задачи каждую минуту:
OnCalendar=* * * * *
  • Запуск задачи каждый час в первую минуту:
OnCalendar=* * * * 1
  • Запуск задачи каждые два часа:
OnCalendar=* */2 * * *

Подробнее смотрите в man systemd.timer.