最直接权威的方式是使用 journalctl 命令查看 systemd 服务日志,支持按服务名、实时跟踪、本次启动、时间范围和优先级等多种方式精准检索。

如果您需要查看由 systemd 管理的服务日志,最直接、最权威的方式是使用 journalctl 命令。该命令专为 systemd-journald 日志系统设计,能准确捕获服务启动、运行、崩溃等全过程结构化日志。以下是多种可行方法:
一、使用 journalctl 查看指定服务的完整日志
此方法适用于已知服务名称且需获取历史全量记录的场景,journalctl 会从二进制日志存储中提取与该服务 unit 完全匹配的日志条目,包含时间戳、优先级、进程ID等元数据。
1、执行命令查看某服务全部日志:journalctl -u servicename.service
2、若服务名为 nginx,则输入:journalctl -u nginx.service
3、如需限制输出行数(例如仅查看最近100行),追加 -n 参数:journalctl -u nginx.service -n 100
二、实时跟踪服务日志流
该方式模拟 tail -f 行为,持续监听新产生的日志条目,适合调试服务启动失败、请求响应异常等动态问题,日志按时间顺序即时刷新。
1、启用实时监控模式:journalctl -u servicename.service -f
2、监控 MySQL 服务实时日志:journalctl -u mysql.service -f
3、中断监控时,按 Ctrl+C 即可退出。
三、筛选本次启动后的服务日志
系统重启后,旧日志可能干扰故障定位。此方法仅提取当前 boot session 中该服务产生的日志,排除历史残留,提高排查效率。
1、查看服务在本次启动周期内的全部日志:journalctl -b -u servicename.service
2、结合 -n 限定行数,例如只看最近50行:journalctl -b -u sshd.service -n 50
3、若服务未启用 systemd socket 激活机制,该命令结果即代表其真实运行时段日志。
四、按时间范围精确提取日志片段
当问题发生时间点明确时,可通过时间窗口缩小日志范围,避免人工滚动海量条目,提升定位速度。journalctl 支持自然语言和 ISO 格式时间输入。
1、查看服务在昨日 9:00 至 11:30 的日志:journalctl -u docker.service --since "yesterday 09:00" --until "yesterday 11:30"
2、使用标准日期格式查询:journalctl -u httpd.service --since "2026-03-30 14:20:00" --until "2026-03-30 15:45:00"
3、若时间参数解析失败,journalctl 将返回空结果,此时请检查系统时区与输入格式一致性。
五、按日志优先级过滤关键事件
日志中混杂 info、notice 等低敏感度条目,通过优先级筛选可聚焦错误(err)、警告(warning)等高价值信息,快速识别异常源头。
1、仅显示错误级别及以上日志(含 err、crit、alert、emerg):journalctl -u postfix.service -p err
2、同时查看警告与错误:journalctl -u rsyslog.service -p warning
3、优先级关键词不区分大小写,但必须使用 journalctl 内置枚举值,不可用 custom 或 debug 替代。

















