/var/log日志清理关键在于安全清空、限制增长与验证释放:先用du和journalctl定位大户,对journal用vacuum-size/time临时清理或journald.conf永久限容,文本日志用truncate或>清空内容,修复logrotate权限,清空apt/unattended-upgrades等隐藏目录,最后df和lsof验证空间释放。

/var 目录下的日志主要集中在 /var/log 及其子目录(如 /var/log/journal、/var/log/apt 等),清理不当容易导致服务异常或空间释放不彻底。关键不是“删文件”,而是安全清空、限制增长、验证释放。
先查清楚谁占了空间
用这两条命令快速定位:
du -sh /var/log/* 2>/dev/null | sort -hr | head -10 journalctl --disk-usage
常见“大户”包括:
-
/var/log/journal/(systemd 日志,二进制、易膨胀) -
/var/log/apt/(升级历史,文本但不压缩) -
/var/log/unattended-upgrades/(自动更新日志,长期累积) -
/var/log/syslog、/var/log/messages(未轮转时可达 GB 级)
分类型清理,不硬删
systemd-journald 日志(最常失控)
- 查当前用量:
journalctl --disk-usage - 临时清理(保留最新 200MB):
sudo journalctl --vacuum-size=200M
- 或按时间清理(如只留最近 5 天):
sudo journalctl --vacuum-time=5d
-
永久限制(防复发):
编辑/etc/systemd/journald.conf,取消注释并设:SystemMaxUse=200M MaxRetentionSec=30d
然后重启服务:
sudo systemctl restart systemd-journald
普通文本日志(syslog、auth.log 等)
-
别直接
rm,用truncate或重定向清空内容:sudo truncate -s 0 /var/log/syslog sudo > /var/log/auth.log
✅ 保留文件节点和权限,服务不会报错
❌ 避免rm -f /var/log/*.log—— 正在写入的服务会卡住或崩溃 -
检查 logrotate 是否生效:
sudo logrotate -d /etc/logrotate.conf | grep "error\|skipping"
若提示权限错误(如
insecure permissions),修复:sudo chmod 755 /var/log sudo chown root:root /var/log
被忽略的“隐藏大块头”
- APT 升级日志(安全清空):
sudo truncate -s 0 /var/log/apt/*.log
- 自动更新日志:
sudo rm -f /var/log/unattended-upgrades/*.log.* sudo truncate -s 0 /var/log/unattended-upgrades/*.log
- Docker 容器日志(若启用):
sudo find /var/lib/docker/containers/ -name "*-json.log" -size +100M -exec truncate -s 0 {} \;
清理后必须做的两件事
- 验证空间是否真正释放:
df -h /var
- 检查是否有“已删除但未释放”的文件(lsof 找句柄):
sudo lsof +L1 | grep deleted
若有输出,说明某服务还在往已删日志写入,需重启对应服务(如
sudo systemctl restart rsyslog或docker restart xxx)。
日志清理不是一次操作,而是配置 + 监控 + 响应的组合。重点在于让 journald.conf 和 logrotate 各司其职,避免下次又满。











