我已经安装了mrd6 (多播路由守护进程),它附带了init脚本。为了管理相关服务,我决定创建一个系统服务单元。我创建的单元文件如下所述:
[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启动服务时,我得到了状态活动(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 ....如何使系统能够正确地处理此服务并能够识别进程正在启动和运行?
发布于 2017-03-22 13:38:21
您使用-D选项告诉mrd6去守护,即叉并进入后台。但是您选择了systemd Type=simple选项。此选项用于不分叉但在前台运行的服务。相反,您应该使用Type=forking。
请记住在更改单元文件后运行systemctl daemon-reload。
https://serverfault.com/questions/839865
复制相似问题