我向谷歌和 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 --
您的里程可能会有所不同。