/var/log/journal/ 目录是什么日志?怎么清理?如何自动清理?
/var/log/journal/ 是 systemd 的持久化日志目录,用于存储通过 journald(Systemd Journal)收集的系统日志。相比传统的 /var/log/syslog 或 /var/log/messages,journald 的日志更结构化、压缩存储,支持更丰富的查询。
/var/log/journal/ 包含的日志内容
- 内核日志(类似 dmesg)
- systemd 服务日志(替代了 syslog)
- 各种系统事件(启动、关闭、错误、服务状态变化等)
- 用户登录记录、安全事件等
如何查看这些日志?
journalctl -b # 查看本次启动以来的日志
journalctl -xe # 查看最近的错误日志
journalctl -u nginx # 查看 nginx 服务的日志
清理日志的方法
方式一:清理旧日志(按时间)
sudo journalctl --vacuum-time=7d
只保留7天内的日志,删除 7 天前的日志。
方式二:按空间大小清理
sudo journalctl --vacuum-size=500M
保留最近的日志,总大小不超过 500MB。
注意事项
- 不建议直接删除 /var/log/journal/ 下的文件,可能导致日志服务异常。
- 清理日志不会影响系统运行,但可能会丢失后续分析故障需要的历史信息。
设置 Systemd 日志自动清理的步骤
要在 Ubuntu 上设置 Systemd Journal 日志的自动清理,推荐的方式是通过编辑配置文件 /etc/systemd/journald.conf,让 systemd 自动管理日志的大小和保留时间。
编辑配置文件 /etc/systemd/journald.conf
,修改以下配置:
SystemMaxUse=500M # 日志最多占用空间
SystemKeepFree=100M # 至少保留这么多磁盘空间
SystemMaxFileSize=50M # 单个日志文件最大大小
SystemMaxFiles=10 # 最多保留多少个日志文件
MaxRetentionSec=7day # 最长保留时间(需使用 systemd 250+ 支持)
⚠️ MaxRetentionSec 是在 systemd 250 版本及以上才支持的,较老版本可用 --vacuum-time= 命令代替。
然后重启服务:
sudo systemctl restart systemd-journald
你可以运行以下命令,查看当前的日志使用情况:
journalctl --disk-usage
PS,如果你使用的是老版本 Ubuntu 或 systemd 不支持 SystemMaxUse,可以设置一个 cron 定时任务来清理日志:
执行 sudo crontab -e 编辑定时任务,添加定时任务(每周清理一次):
0 3 * * 0 /usr/bin/journalctl --vacuum-time=7d