清理过期日志的方法取决于操作系统、日志类型和应用部署方式。下面按常见场景给你一套实用、可操作的清理方案。
du -sh /var/log/*
# 查看占用
journalctl --disk-usage
# 保留最近 7 天
journalctl --vacuum-time=7d
# 限制最大 500M
journalctl --vacuum-size=500M
# 手动清空(不删文件)
truncate -s 0 /var/log/syslog
truncate -s 0 /var/log/messages
# 删除旧日志
rm -f /var/log/*.log.1 /var/log/*.log.2.gz
⚠️ 不建议直接 rm 正在写入的日志文件
du -sh /var/lib/docker/containers/*
truncate -s 0 \
/var/lib/docker/containers/*/*-json.log
/etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
然后重启 Docker:
systemctl restart docker
✅ 推荐用日志滚动策略,而不是手动删
示例(logback):
<rollingPolicy class="ch.qos.logback.core.timebasedrollingpolicy">
<fileNamePattern>app.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
find /app/logs -name "*.log" -mtime +7 -delete
wevtutil el | Foreach-Object { wevtutil cl "$_" }
Get-ChildItem "C:\inetpub\logs" -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Remove-Item
crontab -e
0 2 * * * find /var/log -name "*.log" -mtime +30 -delete
cp app.log app.log.bak
你可以告诉我:
我可以直接给你一条可复制执行的命令或配置。