Это старая версия документа!
Содержание
SYSTEMD
Создание сервиса systemd
Каталог с конфигурациями: /etc/systemd/system/
Пример: myservice.service
Обновить список конфигураций
systemctl daemon-reload
Включить сервис
systemctl enable myservice
Отключить
systemctl disable myservice
Параметры
Тело конфигурации
[Unit]
Description – описание юнита для большего понимания
Documentation – документация по процессу sshd
After – зависимость, т.е. в данном случае запускать юнит только после запуска network.target и sshd-keygen.target
Requires=nginx.service - для запуска службы обязательно необходим сервис ngnix (указать любой другой)
Wants – еще одна зависимость, означает желательно. В примере Wants=sshd-keygen.target, т.е. желательно чтобы было запущено sshd-keygen.target . Желательно но не обязательно.
[Service]
Type – типы запуска служб
User - от имени какого пользователя выполняется сервис
Group - группа, от которой выполнять сервис
WorkingDirectory - рабочая директория службы
EnvironmentFile – файлы переменного окружения
ExecStart – полный путь к исполняемому файлу программы с параметрами запуска
ExecReload – полный пусть к исполняемому файлу программы с параметрами перезапуска программы
KillMode – указывается как будет завершен процесс. В данному случае параметр process говорит о том что будет закрыт только главный процесс
Restart – перезагрузка процесса, параметр on-failure указывает на автоматическую перезагрузку в случает отказа процесса
RestartSec – время ожидания через которое процесс должен перезагрузиться
TimeoutSec=200 - время, сколько ждать перед запуском/остановкой сервиса
OOMScoreAdjust=-100 - запрет на отключение сервиса, в случае нехватки памяти
[Install]
WantedBy – указывает на каком урове запуска стартует сервис, параметр multi-user.target указывает на запуск в многопользовательском режиме без графики
Типы запуска служб
- simple (по умолчанию) – происходит незамедлительный запуск этой службы, с учетом того что процесс не разветвляется (fork). Не используйте simple если пользуетесь очередностью запуска. Одно исключение это активация сокета.
- forking – служба считается запущенной после того, после разветвления процесса с завершением родительского процесса. Используется для запуска классических демонов исключая случаи, когда в таком поведении процесса нет необходимости. Также желательно указать PIDFile=, чтобы systemd мог отслеживать основной процесс.
- oneshot – удобен для скриптов, которые выполняют одно задание и завершаются. При необходимости можно задать параметр RemainAfterExit=yes, чтобы systemd считал процесс активным даже после его завершения.
- notify – идентичен параметру simple, но с оговоркой, что демон пошлет systemd сигнал о своей готовности. Эталонная реализация данного уведомления представлена в libsystemd-daemon.so.
- dbus – служба считается находящейся в состоянии готовности, когда указанный параметр BusName появляется в системной шине DBus.
- idle – откладывается выполнение двоичного файла службы до момента выполнения всех остальных задач. В остальном поведение аналогично simple.
Ключи времени
- 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 - успешная загрузка
Примеры
Запуск службы x11vnc
nano /etc/systemd/system/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