systemdでサービスの再起動回数を表示できますか?

systemdでサービスの再起動回数を表示できますか?

systemdが管理するサービスが再起動された回数(カウンタなど)をすばやく簡単に知ることができる方法が必要です。それは存在しますか?

答え1

このカウンタは追加されており、次のコマンドを使用してアクセスできます。

systemctl show foo.service -p NRestarts

サービスが再開ループにある場合は値を返し、それ以外の場合は何も返しません。

https://github.com/systemd/systemd/pull/6495

答え2

systemctlは、サービスが最後に開始された時刻(または稼働時間)を表示します。ただし、これはサービスが再起動された回数を説明するのに十分ではありません。

次のコマンドは、発生した開始(または再起動)の回数を表示できます。

ログ制御 -u <service_name>.service grep を起動します。

たとえば、

$ journalctl -u foo.service | grep Starting
Jul 24 16:09:56 10.16.26.1 systemd[1]: Starting foo...
Jul 25 18:12:14 10.16.26.1 systemd[1]: Starting foo...

このコマンドは再始動回数のみを提供します。

ログ制御 -u <service_name>.service grep start |

たとえば、

$ journalctl -u foo.service | grep Starting | wc -l 
2

注:ここで使用されている文字列を変更できます。この「開始済み」を使用して、サービスが正常に開始されたことを確認できます。あるいは、「<service_name>.service failed」を使用して、サービスが失敗した回数を知ることもできます。

また、興味深いことに、彼らはGitHubでsystemdにカウンタを追加するというアイデアを議論してきました。

https://github.com/systemd/systemd/issues/4126

関連情報