Systemdはサービスを再起動しませんが、Restart = alwaysです


10

systemdサービスのユニットファイルは次のとおりです。

[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

ユニットは15日前に故障し、systemdはユニットを再起動しませんでしたが、上記のユニットファイルには「Restart = always」が含まれています。

このサービスのステータス出力は次のとおりです。

salt:/srv # systemctl status autossh@eins-work
autossh@eins-work.service - 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[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 autossh@eins-work.service entered failed state

関連:https : //serverfault.com/a/563401/90324

何かが失敗した場合に常に再起動するようにsystemdサービスを設定するにはどうすればよいですか?


失敗後に手動で起動できますか?
Thang Pham

回答:


4

サービスが連続して何度も開始できなかったため、systemdは試行を中止しました。これがResult: start-limit意味することです。

構成されRestart=、開始制限に達したユニットは、再起動を試みないことに注意してください。ただし、後で手動で再起動することもできます。その時点から、再起動ロジックが再びアクティブになります。systemctl reset-failedは、サービスの再起動率カウンターがフラッシュされる原因になることに注意してください。これは、管理者が手動でユニットを起動する必要があり、起動制限がそれを妨げている場合に役立ちます。

サービスの開始に失敗する原因となっている問題を解決する必要があります。

systemdが失敗したサービスの再起動を試行する回数と速度を調整する必要がある場合StartLimitInterval=StartLimitBurst=およびStartLimitAction=オプションを参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.