Systemd startet den Dienst nicht neu, obwohl Restart = immer

10

Hier ist meine Unit-Datei eines systemd-Dienstes:

[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

Das Gerät ist vor 15 Tagen ausgefallen und systemd hat es nicht neu gestartet, obwohl "Restart = always" in der obigen Gerätedatei enthalten ist.

Hier die Statusausgabe dieses Dienstes:

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

Verwandte: /server//a/563401/90324

Wie konfiguriere ich einen systemd-Dienst so, dass er immer neu gestartet wird, wenn etwas fehlschlägt?

guettli
quelle
Könnten Sie es nach einem Fehler manuell starten?
Thang Pham

Antworten:

4

Der Dienst konnte nicht zu oft hintereinander gestartet werden, und so gab systemd den Versuch auf. Das heißt was Result: start-limit.

Beachten Sie, dass Einheiten, für die konfiguriert wurde Restart=und die das Startlimit erreichen, nicht mehr versucht werden, neu gestartet zu werden. Sie können jedoch zu einem späteren Zeitpunkt noch manuell neu gestartet werden. Ab diesem Zeitpunkt wird die Neustartlogik erneut aktiviert. Beachten Sie, dass systemctl reset-faileddadurch der Zähler für die Neustartrate eines Dienstes geleert wird. Dies ist nützlich, wenn der Administrator eine Einheit manuell starten möchte und das Startlimit dies beeinträchtigt.

Sie sollten das Problem beheben, das dazu führt, dass der Dienst nicht gestartet werden kann.

Wenn Sie stimmen müssen , wie oft und wie schnell versucht systemd einen Fehler Dienst neu zu starten, sehen Sie die StartLimitInterval=, StartLimitBurst=und StartLimitAction=Optionen .

Michael Hampton
quelle