【问题标题】:How to provide a restart count to systemd service如何为 systemd 服务提供重启计数
【发布时间】:2018-02-21 04:05:01
【问题描述】:

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

我们在设备重新启动(技术上是应用程序重新启动)时向我们的云服务报告一个事件,但我想将首次启动(重新启动后)与重新启动区分开来。 systemd 中是否有内置机制可以提供服务重启计数,还是我需要滚动自己的方法?

【问题讨论】:

    标签: embedded-linux systemd


    【解决方案1】:

    您可以使用以下命令:

    systemctl show foo.service -p NRestarts
    

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

    【讨论】:

    • 所提供的答案被标记为低质量帖子以供审核。这个提供的答案可能是正确的,但它可以从解释中受益。仅代码答案不被视为“好”答案。以下是How do I write a good answer? 的一些指南。来自review
    • 此功能是在最初提出并回答此问题后不久(我认为是两个月)添加的。虽然这是现在最正确的答案(我已经投了赞成票),但被接受的答案在当时是最有帮助的。
    【解决方案2】:

    你有日记吗?如果你这样做,那么你可以得到这样的计数:

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

    -b 选项将日志限制为当前引导; -u 限制参数中的服务。

    然后你 grep 为“Started”行,并告诉 grep 只给你匹配的数量。

    【讨论】:

    • 我碰巧在从服务生成的其他日志中“开始”了,但稍作调整,这是滚动我自己的方法的合理方法
    猜你喜欢
    • 2017-10-05
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 2021-01-08
    • 2015-05-11
    • 2021-11-20
    • 1970-01-01
    • 2017-08-11
    相关资源
    最近更新 更多