journalctl核心操作是时间范围、服务过滤和实时跟踪;常用参数包括-b(本次启动)、-u(服务名)、-f(实时跟随)等,配合--since、-n、-o json等可高效定位问题。

用 journalctl 查看日志,核心是掌握时间范围、服务过滤和实时跟踪这三类常用操作,不需要记太多命令,记住几个关键参数就能解决大部分问题。
按时间查看最近的日志
系统重启后日志会从最新一次启动开始记录,最常用的是:
-
journalctl -b:查看本次启动后的所有日志 -
journalctl -b -1:查看上一次启动的日志(适合排查重启前的问题) -
journalctl --since "2 hours ago"或--since "2024-05-20 10:00:00":按相对或绝对时间筛选
按服务或进程过滤日志
避免被海量日志淹没,直接定位目标服务:
-
journalctl -u sshd:查看 ssh 服务日志(单位名通常是 service 文件名,如nginx.service可简写为nginx) -
journalctl _PID=1234:查指定进程 ID 的日志(可用ps aux | grep xxx先找 PID) -
journalctl SYSLOG_IDENTIFIER=kernel:查内核日志(或systemd、dhcpcd等标识符)
实时跟踪和常用查看技巧
像看终端输出一样动态监控日志流:
-
journalctl -f:实时跟随最新日志(类似tail -f),按 Ctrl+C 退出 -
journalctl -n 50:只显示最后 50 行(配合-f就是“显示最后 50 行并继续跟进”) -
journalctl -o json:以 JSON 格式输出,方便脚本解析(注意:中文可能显示为 Unicode 转义)
清理和持久化日志(可选)
默认 journal 日志存在内存和 /run/log/journal(重启丢失),若需长期保存:
- 创建目录:
sudo mkdir -p /var/log/journal - 重启 journald:
sudo systemctl restart systemd-journald - 清理旧日志:
sudo journalctl --vacuum-time=2weeks或--vacuum-size=500M
基本上就这些。journalctl 比传统 syslog 更结构化,查得准、过滤快,用熟了比翻 /var/log/messages 还顺手。










