在 Ubuntu 系统中,日志文件主要由 systemd-journald 和 rsyslog 管理。下面是安全、常用、由浅入深的清理方法,推荐按顺序使用。
journalctl --disk-usage
或:
du -sh /var/log
sudo journalctl --vacuum-time=7d
保留最近 7 天日志,其余删除
或按大小:
sudo journalctl --vacuum-size=100M
sudo journalctl --rotate
sudo journalctl --vacuum-time=1s
编辑:
sudo nano /etc/systemd/journald.conf
修改或取消注释:
SystemMaxUse=100M
RuntimeMaxUse=50M
重启服务:
sudo systemctl restart systemd-journald
sudo du -sh /var/log/*
常见可清理:
sudo truncate -s 0 /var/log/syslog
sudo truncate -s 0 /var/log/kern.log
sudo truncate -s 0 /var/log/auth.log
⚠️ 不要用 rm 删除日志文件,否则正在运行的程序可能出错。
sudo rm /var/log/*.gz
sudo rm /var/log/*.[0-9]
logrotate 自动管理(Ubuntu 默认开启)检查:
cat /etc/logrotate.conf
一般无需手动干预。
docker system prune -f
sudo truncate -s 0 /var/log/nginx/access.log
sudo truncate -s 0 /var/log/nginx/error.log
sudo truncate -s 0 /var/log/mysql/error.log
#!/bin/bash
echo "Cleaning logs..."
sudo journalctl --vacuum-size=100M
sudo truncate -s 0 /var/log/syslog
sudo truncate -s 0 /var/log/kern.log
sudo truncate -s 0 /var/log/auth.log
sudo rm -f /var/log/*.gz
echo "Done."
保存为 clean_log.sh:
chmod +x clean_log.sh
./clean_log.sh
| 项目 | 建议 |
|---|---|
| journal 日志 | 限制 100–200M |
| /var/log | 定期 truncate |
| Docker | 定期 prune |
| 服务器 | 开启 logrotate |
如果你愿意,我可以:
直接把下面命令的输出发我即可:
df -h
journalctl --disk-usage
du -sh /var/log/*