How to use Systemd to restart a service when down?

If you are using a systemd service file to start your service, then add the lines below to your service file from where you are starting your service:

[Service]
Type=simple
ExecStart=here will be your service executable name
Restart=always
RestartSec=0
  • Restart=

    Configures whether the service shall be restarted when the service process exits, is killed, or a timeout is reached. Takes one of the following values: no, on-success, on-failure, on-abnormal, on-watchdog, on-abort or always. If set to no (the default).

  • RestartSec=

    Configures the time to sleep before restarting a service (as configured with Restart=). Takes a unit-less value in seconds.

These two options have to be under the [Service] tag in a service file.


I have used monit monit for this. A post at askfedoraproject suggests to me that this is still a good way to monitor processes and automatically restart them.

It provides good granular configuration of the monitoring functions, how to decide if a process has failed, and actions to be taken to recover it.