如何为systemd服务提供重启计数

4

我有一个嵌入式设备,使用systemd管理其各种服务。我们的状态报告应用程序是其中之一。它始终处于开启状态,并在故障(崩溃、异常、OOM条件等)时自动重启。

我们会在设备重新启动(技术上是应用程序重新启动)时向云服务报告事件,但我想区分首次启动(重启后)和重启。systemd中是否有内置机制可以提供服务重启计数,或者我需要自己编写方法?

2个回答

3
你可以使用以下命令:
systemctl show foo.service -p NRestarts

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


提供的答案因为质量较低而被标记为需要审核。这个答案可能是正确的,但是它可以通过解释来更好地表达。仅有代码的答案并不被认为是“好”的答案。以下是一些关于如何撰写良好答案的指南:如何撰写良好答案?。来自审核 - MyNameIsCaleb
此功能是在最初提问和回答后不久(我想大约两个月)添加的。虽然现在这是最正确的答案(我已经点赞了),但当时被采纳的答案最有帮助。 - Speed8ump

2

你有日志吗?如果有,可以按照以下方式获取计数:

journalctl -b -u myservicename.service |grep -c Started

-b选项限制日志仅限于当前启动;-u将限制为参数中的服务。然后使用grep查找“Started”行,并告诉grep仅提供匹配数量。

1
我在服务生成的其他日志中恰好有“已启动”,但通过进行小的调整,这是滚动自己的方法的合理方法。 - Speed8ump

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接