Linux查看系统日志journalctl排查服务错误 Linux
前言
systemd 管理的服务报错,传统 /var/log/messages 信息不全,journalctl 能查询 systemd 统一收集的日志,按服务、时间、级别过滤,是排查服务起不来的主力命令。本文讲解查看全部日志、按服务过滤、看错误级别、实时跟踪和持久化。
操作步骤
1. 查看全部近期日志
sudo journalctl
2. 只看某个服务的日志
sudo journalctl -u nginx
3. 实时跟踪(类似 tail -f)
sudo journalctl -u nginx -f
4. 看本次启动以来的日志
sudo journalctl -b
5. 只看错误及以上级别
sudo journalctl -u nginx -p err
6. 按时间范围
sudo journalctl --since "09:00" --until "11:00"
7. 查看服务退出原因
sudo journalctl -u mysqld -b --no-pager
常见坑
- 系统重启后旧日志消失,journal 默认不落盘,需要持久化配置。
- 加 -u 指定服务名,别用进程名,服务名以 systemctl list-units 为准。
- -f 跟踪时按 q 退出,不是 Ctrl+C 直接关。
- 权限不足,普通用户看不全,加 sudo。
- -b 只看本次启动,历史问题要去掉 -b。
- 日志量巨大,配合 --since 和级别过滤。
- 容器内 journalctl 看不到宿主机 systemd 日志。
总结
journalctl -u 看单服务、-f 实时、-b 本次启动、-p err 筛错误、--since 按时间。排查服务失败先 journalctl -u 服务名 -b。需要跨重启保留日志再配置持久化,日常排查足够用。
遇到问题加QQ23979811 协助处理