在 Linux 运维或日常排障中,“看日志”几乎是绕不开的话题。如果你还停留在 cat /var/log/messages、tail -f 这种传统方式,那么在使用systemd的系统上,你其实错过了一个更强大的工具——journalctl。
今天这篇文章,我们就来系统性地讲清楚:journalctl 是什么、能做什么、以及如何高效使用它。一、journalctl 是什么?
journalctl 是 systemd 提供的日志查询工具,用来读取和管理systemd-journald收集的日志。与传统文本日志不同,journald 的日志是结构化的二进制日志,不仅包含日志内容,还包含:二、最基本的用法
1. 查看所有日志
这会显示系统自启动以来的全部日志,通常非常多,默认使用分页器(类似 less)。2. 实时查看日志(非常常用)
等价于 tail -f,适合在调试服务启动、程序运行时使用。三、按时间筛选日志
1. 查看今天的日志
2. 查看某个时间段的日志
journalctl --since "2025-01-10 09:00:00" --until"2025-01-10 10:00:00"
journalctl --since "1 hour ago"journalctl --since yesterday
四、按服务(Unit)查看日志
1. 查看某个服务的日志
journalctl -u nginx.service
如果你在排查服务启动失败,这是第一条应该敲的命令。2. 实时查看某个服务日志
journalctl -u docker.service -f
五、按日志级别过滤
journalctl 支持标准 syslog 日志级别:journalctl -p warning..err
六、查看本次启动的日志
系统重启后,日志往往会被“打断”,journalctl 可以按启动次数查看。1. 查看启动记录
-1 9f3c... Tue Jan 9 09:00:000 a8b2... Wed Jan 10 08:30:002. 查看本次启动日志
3. 查看上一次启动日志
七、让日志更“人类友好”
1. 精简输出
如果你要写脚本或做日志分析,json 格式非常有价值。2. 限制输出行数
八、journalctl vs 传统日志
如果你的系统已经使用 systemd,学会 journalctl 几乎是必修课。九、总结
如果只记住几条 journalctl 命令,我建议是这五个:掌握它们,你已经可以解决80% 的 Linux 日志排查问题。如果你觉得这篇文章有用,欢迎点赞、收藏,我们下篇继续聊 Linux 基础。