journalctl核心操作是时间范围、服务过滤和实时跟踪;常用参数包括-b(本次启动)、-u(服务名)、-f(实时跟随)等,配合--since、-n、-o json等可高效定位问题。
用 journalctl 查看日志,核心是掌握时间范围、服务过滤和实时跟踪这三类常用操作,不需要记太多命令,记住几个关键参数就能解决大部分问题。
系统重启后日志会从最新一次启动开始记录,最常用的是:
journalctl -b:查看本次启动后的所有日志journalctl -b -1:查看上一次启动的日志(适合排查重启前的问题)journalctl --since "2 hours ago" 或 --since "2025-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
sudo systemctl restart systemd-journald
sudo journalctl --vacuum-time=2weeks 或 --vacuum-size=500M
基本上就这些。journalctl 比传统 syslog 更结构化,查得准、过滤快,用熟了比翻 /var/log/messages 还顺手。