温馨提示×

debian日志磁盘占满怎么办

小樊
54
2026-10-07 00:42:54
栏目: 智能运维

在 Debian 系统中,日志占满磁盘是常见问题,通常是由于 /var/log 下日志无限增长、 journald 不清理、或某个服务疯狂写日志导致。下面按紧急处理 → 根因排查 → 长期治理来说明。


一、紧急处理(先腾出空间)

1. 查看磁盘使用情况

df -h
du -sh /var/log/*

2. 快速清理 Journal 日志(最常见原因)

# 查看 journal 占用
journalctl --disk-usage

# 只保留最近 100MB
journalctl --vacuum-size=100M

# 或只保留最近 7 天
journalctl --vacuum-time=7d

3. 删除过大的日志文件(谨慎)

# 看哪些文件最大
ls -lh /var/log

# 清空而不是删除(避免服务报错)
> /var/log/syslog
> /var/log/auth.log

⚠️ 不要直接 rm 正在被进程占用的日志文件,否则空间不会释放

4. 清理 apt / 旧日志

apt clean
rm -f /var/log/*.old
rm -f /var/log/*.[0-9]

二、找出“谁在写日志”

1. 实时观察日志增长

watch -n 1 'du -sh /var/log/*'

2. 查看哪个进程在写

lsof +L1 | grep deleted
iotop

3. 常见“日志炸弹”来源

  • Nginx / Apache 错误日志
  • cron 任务报错循环
  • systemd 服务无限重启
  • Docker 容器日志

三、长期治理(防止再次占满)

1. 限制 systemd journal 大小

编辑:

/etc/systemd/journald.conf

修改或添加:

SystemMaxUse=500M
MaxRetentionSec=7day

重启:

systemctl restart systemd-journald

2. 配置 logrotate

确保日志轮转正常:

cat /etc/logrotate.conf
ls /etc/logrotate.d/

手动测试:

logrotate -d /etc/logrotate.conf

3. 限制 Docker 日志(如适用)

/etc/docker/daemon.json:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "3"
  }
}

四、推荐的最小安全配置(服务器)

  • journal 上限:500MB
  • logrotate:每日轮转
  • 监控磁盘:
apt install monit

如果你愿意,可以贴一下:

df -h
du -sh /var/log/*

我可以帮你精确定位是哪一类日志导致的问题。

0 踩