Here is my unit file of a systemd service:
[Unit] Description=Tunnel For %i After=network.target [Service] User=autossh ExecStart=/usr/bin/autossh -M 0 -N -o "ExitOnForwardFailure yes" -o "ConnectTimeout=1" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 40443:installserver:40443 -R 8080:installserver:8080 tunnel@%i Restart=always [Install] WantedBy=multi-user.target
The unit failed 15 days ago and systemd did not restart it, although “Restart=always” is in above unit file.
Here the status output of this service:
salt:/srv # systemctl status autossh@eins-work firstname.lastname@example.org - Tunnel For eins-work Loaded: loaded (/etc/systemd/system/autossh@.service; enabled) Active: failed (Result: start-limit) since Wed, 2016-02-10 14:33:34 CET; 2 weeks and 1 days ago Main PID: 17980 (code=exited, status=0/SUCCESS) CGroup: name=systemd:/system/autossh@.service/eins-work Feb 10 14:33:34 salt systemd: Stopping Tunnel For eins-work... Feb 10 14:33:34 salt systemd: Starting Tunnel For eins-work... Feb 10 14:33:34 salt systemd: Failed to start Tunnel For eins-work. Feb 10 14:33:34 salt systemd: Unit email@example.com entered failed state
How to configure a systemd service to always restart if something fails?
The service failed to start too many times in a row, and so systemd gave up trying. This is what
Result: start-limit means.
Note that units which are configured for
Restart=and which reach the start limit are not attempted to be restarted anymore; however, they may still be restarted manually at a later point, from which point on, the restart logic is again activated. Note that
systemctl reset-failedwill cause the restart rate counter for a service to be flushed, which is useful if the administrator wants to manually start a unit and the start limit interferes with that.
You should resolve the problem that is causing the service to fail to start.
If you need to tune how many times and how quickly systemd attempts to restart a failing service, see the
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.