温馨提示×

Debian日志为何过大

小樊
44
2026-07-27 01:30:48
栏目: 智能运维

Debian 系统日志过大通常是因为 rsyslog / journald / 应用日志长期积累、未做轮转或配置不合理。下面按常见原因 → 排查方法 → 解决办法说明。


一、Debian 常见日志位置

类型 路径
系统日志 /var/log/syslog
内核日志 /var/log/kern.log
认证日志 /var/log/auth.log
守护进程日志 /var/log/daemon.log
systemd 日志 journalctl
应用日志 /var/log/ 下的自定义目录

二、最常见原因

1️⃣ 日志未启用轮转(logrotate 未生效)

  • 日志文件一直增长,从不切割、压缩或删除
  • 常见于:
    • 某些软件自定义日志
    • 手动改过 /etc/logrotate.d/

✅ 检查:

ls /etc/logrotate.d/

2️⃣ systemd journal 日志过大(非常常见)

systemd 默认 不限制 journal 大小

✅ 查看大小:

journalctl --disk-usage

✅ 如果看到:

Archived and active journals take up 4.0G

那就是它了


3️⃣ 某服务疯狂打日志

例如:

  • Docker
  • Nginx / Apache
  • MySQL / PostgreSQL
  • 防火墙(iptables / nftables)
  • 定时任务 cron

✅ 查找最近大量日志:

tail -n 1000 /var/log/syslog
journalctl -f

4️⃣ 磁盘 inode 被小日志占满

大量小日志文件(如 debug 日志)

✅ 查看 inode:

df -i

三、如何快速排查是谁在撑大日志

1️⃣ 查找最大日志文件

du -ah /var/log | sort -rh | head -20

2️⃣ journal 是元凶?

journalctl --disk-usage

3️⃣ 实时看日志来源

journalctl -f

四、解决方案


✅ 方案 1:限制 systemd journal 大小(强烈推荐)

编辑:

sudo nano /etc/systemd/journald.conf

修改或添加:

SystemMaxUse=200M
RuntimeMaxUse=100M

重启:

sudo systemctl restart systemd-journald

✅ 立即生效,不会丢历史重要日志(只限制新增长)


✅ 方案 2:手动清理 journal 日志

sudo journalctl --vacuum-size=100M

或按时间:

sudo journalctl --vacuum-time=7d

✅ 方案 3:启用/修复 logrotate

确认 cron / systemd 正常运行:

systemctl status cron
systemctl status logrotate

手动测试轮转:

logrotate -vf /etc/logrotate.conf

✅ 方案 4:清理单个大日志

sudo truncate -s 0 /var/log/syslog

⚠️ 不建议 rm,可能破坏服务写日志


✅ 方案 5:关闭不必要的调试日志

  • Docker:debug = false
  • Nginx:关闭 access_log
  • MySQL:降低 log level

五、推荐的“安全配置示例”

journald:

SystemMaxUse=200M
MaxRetentionSec=7day

logrotate 示例(/etc/logrotate.d/syslog):

/var/log/syslog {
    rotate 7
    daily
    compress
    missingok
    notifempty
}

六、总结一句话

Debian 日志过大 90% 是 systemd journalrsyslog 没限制 + 没有正确轮转

如果你愿意,我可以:

  • ✅ 帮你 逐条分析 journalctl --disk-usage
  • ✅ 看你的 /etc/systemd/journald.conf
  • ✅ 帮你判断 能否直接安全删除某日志

你可以贴一下:

journalctl --disk-usage
du -sh /var/log/*

0