Для работы нужно 3 компонента: скрипт, сервис systemd для запуска скрипта и таймер systemd для запуска сервиса.
Скрипт после создания нужно сделать исполняемым - chmod +x /scripts/test.sh
vi /etc/systemd/system/test.service # Абсолютный минимум для сервиса: [Service] ExecStart=/scripts/test.sh # Вариант создания systemctl edit --force --full test.service # Вариант редактирования systemctl edit --full test.service # Перечитать список сервисов (если редактировалось/создавалось с помощью systemctl edit, то не нужно) sudo systemctl daemon-reload # Можно запускать systemctl start test.service # Логи сервиса test в реальном времени sudo journalctl -u test -f
Другие секции конфигурации сервиса
[Unit] Description=This service runs the script /scripts/test.sh [Service] ExecStart=/scripts/test.sh User=worker # от имени кого будет работать # Если служба запускается по таймеру, секция [Install] не нужна #[Install] #WantedBy=multiuser.target # Если GUI нет #WantedBy=graphical.target # Если это десктоп с GUI
Таймер
# Кладётся в ту же папку, что и сервис vi /etc/systemd/system/test.timer [Unit] Description=This timer starts test.service [Timer] Unit=test.service # [DayOfWeek] Year-Month-Day Hour:Minute:Second OnCalendar=*-*-* 20:15:00 Persistent=true # Если срабатывание пропущено, запустить при загрузке системы #OnBootSec=5min # Через 5 мин после загрузки # Секция нужна для того, чтобы таймер можно было бы включить при загрузке системы [Install] WantedBy=timers.target # Перечитать сервисы sudo systemctl daemon-reload # Включить таймер при загрузке системы sudo systemctl enable test.timer # Список таймеров systemctl list-timers
https://www.youtube.com/watch?v=8640OcCL8T8
https://www.youtube.com/watch?v=OV3Gc0SISUo
Systemd для продолжающих. Part 1 — Запуск юнитов по временным событиям