Назад | Перейти на главную страницу

systemd активный (завершенный) статус mrd6

Я установил mrd6 (демон многоадресной маршрутизации), который поставляется со сценарием инициализации. Я решил создать сервисную единицу systemd, чтобы управлять соответствующей службой. Созданный мной юнит-файл описан ниже:

[Unit]
Description=Multicast routing daemon
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/sbin/mrd6 -D
PIDFile=/run/mrd6.pid
Type=simple
Restart=always
User=root

Однако, когда я запускаю службу с помощью systemd, я получаю статус Active (завершен), что означает, что systemd выполнила команды, указанные в файле модуля, но не знает, действительно ли процесс запущен. Проверка запущенных процессов не означает, что служба запущена.

root@debsrv:/etc/systemd/system# systemctl status mrd6.service 
● mrd6.service - Multicast routing daemon
   Loaded: loaded (/etc/systemd/system/mrd6.service; static)
   Active: active (exited) since ....

Как я могу заставить systemd правильно обрабатывать эту службу и иметь возможность распознавать, что процесс запущен и работает?

Вы использовали -D возможность указать mrd6 демонтировать, то есть выполнить разветвление и перейти в фоновый режим. Но вы выбрали systemd Type=simple вариант. Эта опция предназначена для сервисов, которые не вилка, но работает на переднем плане. Вместо этого вы должны использовать Type=forking.

Не забудьте бежать systemctl daemon-reload после изменения файла модуля.