实战
journalctl # 看当前 boot 所有日志
journalctl -f # 实时跟踪(类似 tail -f)
journalctl -u nginx # 看某服务
journalctl -u nginx -f # 服务实时
按时间
journalctl --since "10 minutes ago"
journalctl --since "2026-05-09 10:00"
journalctl --since today
journalctl --since yesterday --until "1 hour ago"
journalctl --since "2 hours ago" --until now
按服务
journalctl -u nginx
journalctl -u nginx -u mariadb # 多个服务
journalctl _SYSTEMD_UNIT=nginx.service
按优先级
journalctl -p err # 仅 error 及以上
journalctl -p warning..err # 范围
级别(数字小 = 严重):
0 emerg 1 alert 2 crit 3 err
4 warning 5 notice 6 info 7 debug
按 PID / UID
journalctl _PID=1234
journalctl _UID=1000
按 boot
journalctl --list-boots # 看历次开机
journalctl -b 0 # 当前 boot
journalctl -b -1 # 上次 boot
journalctl -b -2 # 上上次
journalctl -k # 内核日志(含所有 boot)
journalctl -k -b 0 # 当前 boot 的内核
输出格式
journalctl -n 50 # 最后 50 行
journalctl -r # 倒序(最新在上)
journalctl -o short # 简短(默认)
journalctl -o cat # 仅消息(无元信息)
journalctl -o json # JSON
journalctl -o json-pretty # 美化 JSON
journalctl --no-pager # 直接打印(不分页)
实战:故障排查
# 服务起不来
sudo journalctl -u myapp --since "10 minutes ago" -p err
# 看完整堆栈
sudo journalctl -u myapp -b -n 100 --no-pager
# 看哪个服务占用 journal 最多
sudo journalctl --disk-usage
sudo journalctl --vacuum-size=500M # 限制 journal 占 500M
sudo journalctl --vacuum-time=7d # 只保留 7 天
journal 文件管理
sudo journalctl --disk-usage
# Archived and active journals take up 234.5M in the file system.
# 清理旧的
sudo journalctl --vacuum-time=7d # 删 7 天前的
sudo journalctl --vacuum-size=100M # 总大小限 100M
或编辑 /etc/systemd/journald.conf:
SystemMaxUse=500M
MaxRetentionSec=1month
坑
journalctl默认要 sudo 才看完整——普通用户只看到自己的- journal 默认存内存(部分发行版)—— 重启后丢失。改成持久:
sudo mkdir -p /var/log/journal sudo systemctl restart systemd-journald - 大量日志时查询慢——加
--since等过滤条件