mrd6 的 systemd 活动(退出)状态

mrd6 的 systemd 活动(退出)状态

我已经安装了 mrd6(多播路由守护程序),它带有一个 init 脚本。我决定创建一个 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 (exited),这意味着 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 正确处理该服务并能够识别该进程是否已启动并正在运行?

答案1

您使用了-D告诉 mrd6 守护进程的选项,即 fork 并进入后台。但您选择了 systemdType=simple选项。此选项适用于不要fork 但在前台运行。相反,您应该使用Type=forking

systemctl daemon-reload请记住在更改单元文件后运行。

相关内容