1

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?

giomanda
  • 1,644
  • 4
  • 20
  • 30
  • Did you miss the note from the author? "[note from the author, 2013: mrd6 is unsupported software. Since 2005 native multicast forwarding support has been added to Linux and pim6sd can be used to manage it. mrd6's codebase is kept around for historical reasons, it should still work in current kernels and still allows you to do funky things with routing. Feel free to fork. -hugo]" – Michael Hampton Mar 22 '17 at 13:36
  • @MichaelHampton I did saw the comment how ever i still need mrd6 functionality. – giomanda Mar 23 '17 at 13:26

1 Answers1

2

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 Type=forking.

Remember to run systemctl daemon-reload after changing the unit file.

Michael Hampton
  • 237,123
  • 42
  • 477
  • 940
  • Cheers..I also had a weird issue, when i was declaring the pid file location the daemon wouldn't start (systemd gave error about pid not available after process start). When i DONT declare the PID file location works as expected. – giomanda Mar 23 '17 at 13:23
  • @giomanda [systemd doesn't need a PID file](http://serverfault.com/a/817560/126632) to keep track of a daemon. – Michael Hampton Mar 23 '17 at 21:17