Создание сервиса systemd: различия между версиями

Материал из ALT Linux Wiki
(Новая страница: «Если Вам необходимо создать автозапуск приложения на уровне systemd/сделать службу (сервис)…»)
 
 
(не показано 12 промежуточных версий этого же участника)
Строка 1: Строка 1:
Если Вам необходимо создать автозапуск приложения на уровне systemd/сделать службу (сервис), вы можете выполнить следующие действия:
Если Вам необходимо создать автозапуск приложения на уровне systemd/сделать службу (сервис), вы можете выполнить следующие действия:
<source lang="ini">
# cd /etc/systemd/system
</source>
==Конфиг службы==
===Простой вариант для пробы===
Чтобы понять, что из себя представляет Unit в Systemd попробуем создать службу, которая запускает программу '''n''' ('''/usr/bin/n''').
<source lang="ini">
# mcedit start-n.service
</source>
<source lang="ini">
[Unit]
Description=Start-n
After=default.target


  # cd /etc/systemd/system
[Service]
ExecStart=/usr/bin/n
 
[Install]
WantedBy=default.target
</source>
<source lang="ini">
  # systemctl daemon-reload
</source>
<source lang="ini">
# systemctl enable start-n
</source>
 
В данном варианте у нас при загрузке запутится и будет работать указанная программа.


# nano network-restart.service
===Вариант с запуском службы программы===
<source lang="ini"># mcedit x11vncsrv.service</source>


Вводим в текстовом редакторе:
Вводим в текстовом редакторе:
<source lang="ini">
  [Unit]
  [Unit]
  Description=Restart Network
# описание
  After=default.target
  Description=X11VNC Server
# здесь используется ключи времени с указанием цели или другой службы
  After=prefdm.service
   
   
  [Service]
  [Service]
  ExecStart=service network restart
# от какого пользователя запускать службу, не обязательно
User=root
# перезапуск службы, не обязательно
Restart=on-failure
#выполняемая команда
  ExecStart=/usr/bin/x11vnc -auth /var/run/lightdm/root/:0 -dontdisconnect -usepw -noxfixes -shared -forever -rfbport 5900 -rfbauth /root/.vnc/passwd
   
   
  [Install]
  [Install]
  WantedBy=default.target
# здесь используется ключи времени с указанием цели или другой службы
  WantedBy=graphical.target
</source>


<source lang="ini">
  # systemctl daemon-reload
  # systemctl daemon-reload
</source>
<source lang="ini">
# systemctl enable x11vncsrv
</source>
==Ключи времени==
*Wants, Requires, Before, After.
**(Ожидает, Требует, Перед, После)
*WantedBy, RequiresBy.
**(Ожидается цель/служба, Требуется цель/служба)
==Параметры перезапуска службы==
*no - никогда
*always - всегда
*on-success - успешно
*on-failure - не успешно
*on-abnormal - не нормальный
*on-abort - при прирывании
*on-watchdog - Сторожевой таймер (Watchdog timer) — аппаратно реализованная схема контроля над зависанием системы. Представляет собой таймер, который периодически сбрасывается контролируемой системой. Если сброса не произошло в течение некоторого интервала времени, происходит принудительная перезагрузка системы.
{| class="wikitable collapsible" style="float:center; margin-left:2em"
!Restart settings/Exit causes || no || always || on-success || on-failure || on-abnormal || on-abort || on-watchdog
|-
|Clean exit code or signal<br>Корректый код выхода или сигнал || || X || X || ||  ||  ||
|-
|Unclean exit code<br>Неккоректный код выхода || || X  ||  ||X || || ||
|-
|Unclean signal<br>Некорректный сигнал ||  ||X ||  || X || X || X ||
|-
|Timeout || || X ||  || X  || X ||  ||
|-
|Watchdog<br>Сторожевой таймер  || || X || || X || X || || X
|}
==Список целей==
*default.target - модуль по-умолчанию
*graphical.target - запуск графической подсистемы
*multi-user.target - запуск консоли
*network-online.target - ожидание подключенной сети (используется в Wants)
*network.target - сеть
*network-pre.target - запуск до настройки сети (используется в Requires)
*boot-complete.target - успешная загрузка [https://www.freedesktop.org/software/systemd/man/systemd.special.html [i]]


# systemctl enable network-restart
==Примеры служб==
*[[EnterpriseApps/Hadoop#Создание службы|Hadoop]]
[[Категория:HOWTO]]
[[Категория:HOWTO]]
[[category:systemd]]

Текущая версия от 23:27, 29 апреля 2024

Если Вам необходимо создать автозапуск приложения на уровне systemd/сделать службу (сервис), вы можете выполнить следующие действия:

 # cd /etc/systemd/system

Конфиг службы

Простой вариант для пробы

Чтобы понять, что из себя представляет Unit в Systemd попробуем создать службу, которая запускает программу n (/usr/bin/n).

 # mcedit start-n.service
[Unit]
Description=Start-n
After=default.target

[Service]
ExecStart=/usr/bin/n

[Install]
WantedBy=default.target
 # systemctl daemon-reload
 # systemctl enable start-n

В данном варианте у нас при загрузке запутится и будет работать указанная программа.

Вариант с запуском службы программы

# mcedit x11vncsrv.service

Вводим в текстовом редакторе:

 [Unit]
 # описание
 Description=X11VNC Server
 # здесь используется ключи времени с указанием цели или другой службы
 After=prefdm.service
 
 [Service]
 # от какого пользователя запускать службу, не обязательно
 User=root
 # перезапуск службы, не обязательно
 Restart=on-failure
 #выполняемая команда
 ExecStart=/usr/bin/x11vnc -auth /var/run/lightdm/root/:0 -dontdisconnect -usepw -noxfixes -shared -forever -rfbport 5900 -rfbauth /root/.vnc/passwd
 
 [Install]
 # здесь используется ключи времени с указанием цели или другой службы
 WantedBy=graphical.target
 # systemctl daemon-reload
 # systemctl enable x11vncsrv

Ключи времени

  • Wants, Requires, Before, After.
    • (Ожидает, Требует, Перед, После)
  • WantedBy, RequiresBy.
    • (Ожидается цель/служба, Требуется цель/служба)

Параметры перезапуска службы

  • no - никогда
  • always - всегда
  • on-success - успешно
  • on-failure - не успешно
  • on-abnormal - не нормальный
  • on-abort - при прирывании
  • on-watchdog - Сторожевой таймер (Watchdog timer) — аппаратно реализованная схема контроля над зависанием системы. Представляет собой таймер, который периодически сбрасывается контролируемой системой. Если сброса не произошло в течение некоторого интервала времени, происходит принудительная перезагрузка системы.
Restart settings/Exit causes no always on-success on-failure on-abnormal on-abort on-watchdog
Clean exit code or signal
Корректый код выхода или сигнал
X X
Unclean exit code
Неккоректный код выхода
X X
Unclean signal
Некорректный сигнал
X X X X
Timeout X X X
Watchdog
Сторожевой таймер
X X X X

Список целей

  • default.target - модуль по-умолчанию
  • graphical.target - запуск графической подсистемы
  • multi-user.target - запуск консоли
  • network-online.target - ожидание подключенной сети (используется в Wants)
  • network.target - сеть
  • network-pre.target - запуск до настройки сети (используется в Requires)
  • boot-complete.target - успешная загрузка [i]

Примеры служб