在 Debian 系统中,日志主要由 systemd-journald、rsyslog/syslog 以及应用自身产生。下面按常见场景给你一套安全、可控的清理方法,从“最推荐”到“进阶”。
Debian 9+ 默认使用 systemd-journald。
journalctl --disk-usage
示例输出:
Archived and active journals take up 1.2G in the file system.
sudo journalctl --vacuum-time=7d
sudo journalctl --vacuum-size=200M
✅ 不会破坏系统,推荐服务器使用
编辑配置:
sudo nano /etc/systemd/journald.conf
修改或取消注释:
[Journal]
SystemMaxUse=200M
RuntimeMaxUse=100M
然后重启:
sudo systemctl restart systemd-journald
✅ 以后日志不会无限增长
/var/log/syslog
/var/log/kern.log
/var/log/auth.log
/var/log/mail.log
/var/log/dpkg.log
✅ 正确方式:清空而不是删除
sudo truncate -s 0 /var/log/syslog
sudo truncate -s 0 /var/log/kern.log
❌ 不建议:
rm /var/log/syslog
(可能导致服务无法写入)
Debian 默认已安装并自动运行。
查看配置:
ls /etc/logrotate.d/
手动执行一次:
sudo logrotate -vf /etc/logrotate.conf
sudo rm -f /var/log/*.gz
sudo rm -f /var/log/*.1
sudo rm -f /var/log/*.[0-9]
⚠️ 注意:这些通常是 历史日志,删除后无法恢复
docker system prune -f
或限制日志大小(daemon.json):
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
}
}
sudo truncate -s 0 /var/log/nginx/access.log
sudo truncate -s 0 /var/log/nginx/error.log
#!/bin/bash
echo "Cleaning journal logs..."
sudo journalctl --vacuum-time=7d
echo "Cleaning /var/log..."
sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
sudo find /var/log -type f \( -name "*.gz" -o -name "*.1" \) -delete
echo "Done."
| 项目 | 建议 |
|---|---|
| journal 日志 | 限制 200M |
| syslog | 用 logrotate |
| 清理方式 | truncate,不 rm |
| 服务器 | 定期 vacuum |
如果你愿意,可以告诉我:
cat /etc/debian_version)我可以帮你精确分析哪些日志最占空间。