journalctl - systemd 日志查询与清理
systemd-journald 收集并存储系统日志,包括内核、启动过程、系统服务及应用程序产生的日志。journalctl 用于查询这些日志。
基本语法
journalctl [OPTIONS...] [MATCHES...]默认按时间顺序显示可读取的日志,从较早记录到最新记录。
常用参数
| 参数 | 描述 |
|---|---|
-n | 显示最近若干行 |
-r | 反向输出,从最新记录开始 |
-p | 按日志优先级过滤 |
-f | 持续显示新日志,类似 tail -f |
-o | 指定输出格式,如 short、json、json-pretty 或 cat |
--since、--until | 设置查询的开始与结束时间 |
-u UNIT | 只显示指定 systemd 单元的日志 |
_COMM=bash | 按命令名称过滤 |
_PID=PID | 按进程 ID 过滤 |
_UID=UID | 按用户 ID 过滤 |
查询示例
# 显示昨天以来的日志
journalctl --since yesterday
# 查询指定相对时间范围
journalctl --since 9:00 --until "1 hour ago"
# 查询指定时间范围
journalctl --since "2022-01-16 09:00:00" --until "2022-01-16 10:00:00"
# 只看 err 及更高优先级的日志
journalctl -p err
# 只看指定服务的日志
journalctl -u ntpd
# 持续查看指定服务的新日志
journalctl -u ntpd -f查看与清理磁盘占用
先查看日志当前占用的磁盘空间:
journalctl --disk-usage确认需要清理后,可以先轮转当前活动日志,再删除超过保留期限或大小限制的归档日志:
# 只保留最近 4 周的归档日志
sudo journalctl --rotate --vacuum-time=4weeks
# 将归档日志占用限制在约 500 MB
sudo journalctl --rotate --vacuum-size=500M--vacuum-* 会删除最旧的归档日志文件。执行前应确认审计、故障排查和合规要求,避免清除仍需保留的记录。