On 08/09/2018 08:02 AM, Bill wrote: > So I've written a service file for systemd, > /etc/systemd/system/rinetd.service and enabled it with systemctl enable > /etc/systemd/system/rinetd.service. At boot time the file gets run but > nothing shows up with ps aux, although sshd is running correctly. I > think the problem is with the systemd file. Here's the rinetd.service file: > > # /etc/systemd/system/rinetd.service > # A systemd.service file to start > # /usr/sbin/rinetd at boot time. > > [Unit] > Description=Start rinetd server > After=multi-user.target network.target sshd.service > > [Service] > Type=oneshot > ExecStart=/usr/sbin/rinetd > Restart=no > > [Install] > WantedBy=multi-user.target
I suspect this is because rinetd is forking and not a oneshot script. You have two choices here: you may use Tye=simple and pass -f to rinetd (probably recommended, more straightforward to stop the process) or use Type=forking and leave the rest as-is. Type=oneshot is used for exactly that, one-shot scripts that are run once and do not persist. Since rinetd does persist (forks by default), oneshot is not a good choice here. It wouldn't let you stop the service through systemd, for instance, even if it worked, without adding ExecStop manually. When writing service unit files, I especially find systemd.service(5) and systemd.exec(5) helpful. Also see systemd.unit(5) for more generic information on unit files as a whole. Good luck!