【发布时间】:2018-02-21 04:05:01
【问题描述】:
我有一个嵌入式设备,它使用 systemd 管理其各种服务。我们的状态报告应用程序就是这些服务之一。它始终处于开启状态,并在出现故障(崩溃、异常、OOM 条件等)时自动重新启动。
我们在设备重新启动(技术上是应用程序重新启动)时向我们的云服务报告一个事件,但我想将首次启动(重新启动后)与重新启动区分开来。 systemd 中是否有内置机制可以提供服务重启计数,还是我需要滚动自己的方法?
【问题讨论】:
我有一个嵌入式设备,它使用 systemd 管理其各种服务。我们的状态报告应用程序就是这些服务之一。它始终处于开启状态,并在出现故障(崩溃、异常、OOM 条件等)时自动重新启动。
我们在设备重新启动(技术上是应用程序重新启动)时向我们的云服务报告一个事件,但我想将首次启动(重新启动后)与重新启动区分开来。 systemd 中是否有内置机制可以提供服务重启计数,还是我需要滚动自己的方法?
【问题讨论】:
您可以使用以下命令:
systemctl show foo.service -p NRestarts
如果服务处于重启循环中,它将返回一个值,否则,将不返回任何值。
【讨论】:
你有日记吗?如果你这样做,那么你可以得到这样的计数:
journalctl -b -u myservicename.service |grep -c Started
-b 选项将日志限制为当前引导; -u 限制参数中的服务。
然后你 grep 为“Started”行,并告诉 grep 只给你匹配的数量。
【讨论】: