systemd 可以显示服务重启了多少次吗?

jer*_*ean 16 systemd

我想要一种快速简便的方法来告诉 systemd 管理的服务重新启动了多少次(即像计数器一样)。那存在吗?

小智 14

该计数器已被添加,可以使用以下命令访问:

systemctl show foo.service -p NRestarts

如果服务处于重启循环中,它将返回一个值,否则将不返回任何内容。

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


jer*_*ean 10

systemctl 显示服务的最后启动时间(或正常运行时间)。但这不足以说明服务重新启动了多少次。

以下命令可能会显示启动(或重新启动)发生的次数:

journalctl -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...
Run Code Online (Sandbox Code Playgroud)

这个命令只是给你一个重启次数的计数:

journalctl -u <service_name>.service | grep 开始 | wc -l

例如:

$ journalctl -u foo.service | grep Starting | wc -l 
2
Run Code Online (Sandbox Code Playgroud)

注意:您可以更改此处使用的字符串。您可以使用此“已启动”来判断服务是否成功启动。或者您可以使用“ <service_name>.service failed”来告诉服务失败的发生次数。

此外,有趣的是,他们一直在讨论在 GitHub 上向 systemd 添加计数器的想法:

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