Создание сервиса systemd

Материал из ALT Linux Wiki

Если Вам необходимо создать автозапуск приложения на уровне 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.
    • (Ожидает, Требует, Перед)
  • WantedBy, RequiresBy или After.
    • (Ожидается целью/службой, Требуется цели/службе, После цели/службы)

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

  • 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]