Инструменты пользователя

Инструменты сайта


os:linux:systemd

Различия

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

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
os:linux:systemd [23.03.2025 08:21] – [systemd] viacheslavos:linux:systemd [23.03.2025 08:36] (текущий) – [Таймер для периодического запуска] viacheslav
Строка 193: Строка 193:
 active # or inactive active # or inactive
 </code> </code>
-===== Таймер для периодического запуска =====+===== systemd.timer ===== 
 Сервис типа oneshot, запускающий скрипт Сервис типа oneshot, запускающий скрипт
 <code ini> <code ini>
Строка 226: Строка 227:
 https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files\\ https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files\\
 https://unix.stackexchange.com/questions/126786/systemd-timer-every-15-minutes\\ https://unix.stackexchange.com/questions/126786/systemd-timer-every-15-minutes\\
 +
 +Для работы нужно 3 компонента: скрипт, сервис systemd для запуска скрипта и таймер systemd для запуска сервиса.\\
 +Скрипт после создания нужно сделать исполняемым - ''chmod +x /scripts/test.sh''
 +
 +<code bash>
 +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
 +</code>
 +
 +Другие секции конфигурации сервиса
 +<code bash>
 +[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
 +</code>
 +
 +Таймер
 +<code bash>
 +# Кладётся в ту же папку, что и сервис
 +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
 +</code>
 +[[https://www.youtube.com/watch?v=8640OcCL8T8|Linux Command Line (57) systemd.timer pt1 - MichaelsTechTutorials]]\\
 +[[https://www.youtube.com/watch?v=OV3Gc0SISUo|Linux Command Line (58) systemd.timer pt2 - MichaelsTechTutorials]]\\
 +[[https://habr.com/ru/post/535930/|Systemd для продолжающих. Part 1 — Запуск юнитов по временным событиям]]
os/linux/systemd.1742718111.txt.gz · Последнее изменение: 23.03.2025 08:21 — viacheslav

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki