如何检查 systemd 服务的最后几个(n)个状态?

如何检查 systemd 服务的最后几个(n)个状态?

我向谷歌和 ChatGPT 询问了这个问题,即查看n服务的指定最近状态,显然按时间顺序排列。

ChatGPT 告诉我这是可行的:

systemctl  status --quiet example.service -n 5

但这不起作用,至少对我来说。

答案1

手册页man systemctl解释为什么这对你不起作用:

-n, --lines=

与 一起使用时status,控制要显示的日志行数,从最新行开始计算。采用正整数参数,或 0 以禁用日志输出。默认为 10。

因此systemctl status example.service -n 5显示较少信息而不是更多/全部信息。

systemctl status

... 注意此操作仅显示运行时状态,即有关当前调用设备(如果正在运行)或最近一次调用(如果它不再运行,并且尚未从内存中释放)。

但在同一段落中,它确实指导您如何获取有关以前调用的信息:

可以通过以下方式检索有关早期调用、上次系统启动时的调用或已从内存中释放的先前调用的信息journalctl --unit=

请注意,对于我的许多服务,我都会看到一个警告“日记本已轮换”

systemctl status httpd

● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2023-08-11 15:31:26 CEST; 6 days ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 21095 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
 Main PID: 888 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─  888 /usr/sbin/httpd -DFOREGROUND
           └─30179 /usr/sbin/httpd -DFOREGROUND

Warning: Journal has been rotated since unit was started. 
Log output is incomplete or unavailable.
^^^^^^^^^     ^^^^^^^^^     ^^^^^^^^^     ^^^^^^^^^

最后一行至关重要,并解释了为什么推荐的跑步动作journalctl --unit=对我来说没有什么特别的用处:

journalctl --unit=httpd.service

-- No entries --

您的里程可能会有所不同。

相关内容