Systemd nie uruchamia ponownie usługi, chociaż Restart = zawsze

10

Oto mój plik jednostki usługi systemowej:

[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

Jednostka uległa awarii 15 dni temu i systemd nie uruchomił jej ponownie, chociaż „Restart = always” znajduje się powyżej pliku jednostki.

Oto dane wyjściowe statusu tej usługi:

salt:/srv # systemctl status autossh@eins-work
[email protected] - Tunnel For eins-work
      Loaded: loaded (/etc/systemd/system/[email protected]; 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/[email protected]/eins-work

Feb 10 14:33:34 salt systemd[1]: Stopping Tunnel For eins-work...
Feb 10 14:33:34 salt systemd[1]: Starting Tunnel For eins-work...
Feb 10 14:33:34 salt systemd[1]: Failed to start Tunnel For eins-work.
Feb 10 14:33:34 salt systemd[1]: Unit [email protected] entered failed state

Powiązane: https://serverfault.com/a/563401/90324

Jak skonfigurować usługę systemową, aby zawsze się restartowała, jeśli coś zawiedzie?

guettli
źródło
Czy możesz ręcznie uruchomić go po awarii?
Thang Pham,

Odpowiedzi:

4

Usługa nie uruchomiła się zbyt wiele razy z rzędu, więc systemd zrezygnował z próby. To Result: start-limitznaczy.

Należy pamiętać, że jednostki, które są skonfigurowane Restart=i osiągają limit początkowy, nie są już próbowane ponownie uruchamiać; mogą one jednak zostać ponownie uruchomione ręcznie w późniejszym momencie, od tego momentu logika ponownego uruchamiania jest ponownie aktywowana. Zauważ, że systemctl reset-failedspowoduje to opróżnienie licznika częstotliwości restartu dla usługi, co jest przydatne, jeśli administrator chce ręcznie uruchomić jednostkę, a limit startu przeszkadza w tym.

Powinieneś rozwiązać problem, który powoduje, że usługa się nie uruchamia.

Jeśli trzeba dostroić ile razy i jak szybko Systemd prób ponownego uruchomienia usługi niepowodzeniem, patrz się StartLimitInterval=, StartLimitBurst=i StartLimitAction=opcje .

Michael Hampton
źródło