Создание сервиса systemd: различия между версиями
Нет описания правки |
|||
(не показано 9 промежуточных версий этого же участника) | |||
Строка 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 | |||
# | [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> | |||
В данном варианте у нас при загрузке запутится и будет работать указанная программа. | |||
===Вариант с запуском службы программы=== | |||
<source lang="ini"># mcedit x11vncsrv.service</source> | |||
Вводим в текстовом редакторе: | Вводим в текстовом редакторе: | ||
<source lang="ini"> | |||
[Unit] | [Unit] | ||
# описание | |||
Description=X11VNC Server | Description=X11VNC Server | ||
# здесь используется ключи времени с указанием цели или другой службы | |||
After=prefdm.service | After=prefdm.service | ||
[Service] | [Service] | ||
# от какого пользователя запускать службу, не обязательно | |||
User=root | User=root | ||
# перезапуск службы, не обязательно | |||
Restart=on-failure | Restart=on-failure | ||
#выполняемая команда | |||
ExecStart=/usr/bin/x11vnc -auth /var/run/lightdm/root/:0 -dontdisconnect -usepw -noxfixes -shared -forever -rfbport 5900 -rfbauth /root/.vnc/passwd | ExecStart=/usr/bin/x11vnc -auth /var/run/lightdm/root/:0 -dontdisconnect -usepw -noxfixes -shared -forever -rfbport 5900 -rfbauth /root/.vnc/passwd | ||
[Install] | [Install] | ||
# здесь используется ключи времени с указанием цели или другой службы | |||
WantedBy=graphical.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 - модуль по-умолчанию | *default.target - модуль по-умолчанию | ||
*graphical.target - запуск графической подсистемы | *graphical.target - запуск графической подсистемы | ||
*multi-user.target - запуск консоли | *multi-user.target - запуск консоли | ||
*network-online.target - ожидание подключенной сети (используется в Wants) | *network-online.target - ожидание подключенной сети (используется в Wants) | ||
*network.target - сеть | |||
*network-pre.target - запуск до настройки сети (используется в Requires) | *network-pre.target - запуск до настройки сети (используется в Requires) | ||
*boot-complete.target - успешная загрузка | *boot-complete.target - успешная загрузка [https://www.freedesktop.org/software/systemd/man/systemd.special.html [i]] | ||
==Примеры служб== | |||
*[[EnterpriseApps/Hadoop#Создание службы|Hadoop]] | |||
[[Категория:HOWTO]] | [[Категория:HOWTO]] | ||
[[category:systemd]] | [[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]