如何查看linux服务重启了多少次

How to check how many times linux service restarted

有没有办法查看linux服务在特定时间范围内重启了多少次?目前正在使用 systemctl status nameOfService | grep -Po ".*; \K(.*)(?= ago)" 提取正常运行时间,但这不足以进行诊断。

如果您有那个时期的日志,您确实可以从日志中提取“已停止”/“已启动”消息。在如今使用 systemd 的系统上,许多系统使用 journalctl,但许多系统使用其他东西 - 您必须检查您的特定系统以了解如何查询日志。

您的脚本可能看起来像:

 journalctl --since=<date> --until=<another data> UNIT=<service name> SYSLOG_IDENTIFIER=systemd |
 awk '
      /Started/{ started = 1 }
      /Stopped/{ if (started) { started = 0; restarted++; } }
      END {
          print "It was restarted " restarted "times."
      }
 '

这里的正则表达式只是一个例子。最好使用 journalctl -o json 并使用 jq.

解析输出
journalctl --since "date" | grep "Starting Some Service" | wc -l

journalctl 显示自定义日期以来的日志 grep 按伴随重启服务的消息进行过滤 wc -l 统计结果