/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

标签: ubuntu, 日志清理, journal

添加新评论