I have installed mrd6 (Multicast routing daemon) which comes with an init script. I decided to create a systemd service unit in order to manage the relevant service. The unit file i created is the one described bellow:
[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
However, when i start the service using the systemd, i get status Active (exited) which means that systemd executed the commands specified in unit file but does not know if the process is indeed running. Checking running processes does not indicate that the service is started.
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 ....
How can i make systemd to properly handle this service and be able to recognize the the process is up and running?
You used the
-D option to tell mrd6 to daemonize, i.e. fork and go into the background. But you selected the systemd
Type=simple option. This option is meant for services which do not fork but run in the foreground. Instead, you should use
Remember to run
systemctl daemon-reload after changing the unit file.
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.