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

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


os:linux:systemd

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
os:linux:systemd [19.09.2024 18:13] – [Unit-файл] viacheslavos:linux:systemd [23.03.2025 08:36] (текущий) – [Таймер для периодического запуска] viacheslav
Строка 4: Строка 4:
 [[https://www.youtube.com/watch?v=tY9GYsoxeLg|Demystifying Systemd]]\\ [[https://www.youtube.com/watch?v=tY9GYsoxeLg|Demystifying Systemd]]\\
 https://systemd-by-example.com/ - примеры с тестами в браузере.\\ https://systemd-by-example.com/ - примеры с тестами в браузере.\\
 +https://systemd.io/\\
 +{{ :os:linux:s4a_latest.pdf |systemd для администраторов, русский перевод (Сергей Пташник, 28 октября 2017 г.)}}\\
 +[[https://habr.com/ru/companies/timeweb/articles/824146/|systemD с 0 до 1: библия сисадмина (Хабр)]]
 ===== Unit-файл ===== ===== Unit-файл =====
 https://www.freedesktop.org/software/systemd/man/systemd.unit.html https://www.freedesktop.org/software/systemd/man/systemd.unit.html
Строка 12: Строка 15:
  
 Пример unit-файла: Пример unit-файла:
-<file bash /etc/systemd/system/multi-user.target.wants/cron.service> +<file bash /etc/systemd/system/multi-user.target.wants/sshd.service>
-[Unit]+
 [Unit] [Unit]
 Description=OpenSSH server daemon Description=OpenSSH server daemon
Строка 183: Строка 185:
 https://stackoverflow.com/questions/369758/how-to-trim-whitespace-from-a-bash-variable https://stackoverflow.com/questions/369758/how-to-trim-whitespace-from-a-bash-variable
  
-===== Таймер для периодического запуска =====+Псевдосервис и получение его статуса для скриптов 
 +<code bash> 
 +systemd-run --user --unit=camunda sleep infinity 
 +Running as unit: camunda.service 
 + 
 +systemctl --user is-active camunda.service 
 +active # or inactive 
 +</code> 
 +===== systemd.timer ===== 
 Сервис типа oneshot, запускающий скрипт Сервис типа oneshot, запускающий скрипт
 <code ini> <code ini>
Строка 216: Строка 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.1726769605.txt.gz · Последнее изменение: 19.09.2024 18:13 — viacheslav

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki