journalctl日志优先级为0–7,数值越小越紧急:0 emerg(系统不可用)、1 alert(须立即干预)、2 crit(临界状态)、3 err(错误)、4 warning(潜在风险)、5 notice(正常但重要)、6 info(常规信息)、7 debug(调试输出);-p参数指定上限阈值,如-p 2显示0–2级全部日志。

journalctl 的日志优先级是 0 到 7 的整数,数值越小代表问题越紧急,所以“从小到大过滤”实际是指从最高危(0)开始,逐步包含较低危级别(1、2……7)。但日常排查中,我们通常不是“从小到大遍历”,而是按需指定一个临界值,显示该级别及更紧急的所有日志——因为 0~N 的日志天然包含在 -p N 的结果里。
理解 -p 参数的含义
使用 -p LEVEL 时,LEVEL 是一个**上限阈值**:只显示优先级数值 ≤ LEVEL 的日志。
例如:
- journalctl -p 0 → 只显示 emerg(系统不可用)
- journalctl -p 2 → 显示 emerg(0)、alert(1)、crit(2)
- journalctl -p 4 → 显示 emerg 到 warning 共 5 种级别(0–4)
这正是“从小到大”的自然覆盖逻辑:指定数字 N,就拿到 0,1,2,…,N 全部。
常用优先级筛选命令
不必逐个试 0→7,直接用语义化名称或对应数字即可:
-
journalctl -p emerg或journalctl -p 0—— 系统崩溃级事件 -
journalctl -p alert或journalctl -p 1—— 需秒级人工响应 -
journalctl -p crit或journalctl -p 2—— RAID降级、主库连接中断等 -
journalctl -p err或journalctl -p 3—— 最常用,覆盖服务启动失败、配置错误等 -
journalctl -p warning或journalctl -p 4—— 证书过期、磁盘使用率 >90% 等预警
结合其他条件提升定位效率
单看优先级还不够,建议叠加以下过滤缩小范围:
- 限定本次启动:
journalctl -b -p 3 - 聚焦某服务:
journalctl -u nginx.service -p 4 - 查内核级错误:
journalctl -k -p 2(-k 只显示 kernel 日志) - 同时满足多个字段:
journalctl _SYSTEMD_UNIT=sshd.service -p err
注意默认行为和权限
普通用户执行 journalctl -p 3 可能看不到部分系统级 err 日志,需加 sudo;
另外,debug 级别(7)默认不记录,除非修改了 /etc/systemd/journald.conf 中的 LogLevel=debug 并重启 journald。











