温馨提示×

debian日志过大如何处理

小樊
50
2026-09-19 05:59:41
栏目: 智能运维

在 Debian 系统中,日志过大通常由 系统日志(rsyslog / syslog)、systemd journal(journalctl)、或 应用日志(如 Nginx、Docker) 引起。下面按常见场景给你一套实用处理方案。


一、先确认日志在哪里、有多大

# 查看各目录占用
du -sh /var/log/*

# 查看 journal 日志大小
journalctl --disk-usage

二、处理 systemd journal 日志(最常见)

1️⃣ 限制 journal 日志大小(推荐)

编辑配置文件:

sudo vim /etc/systemd/journald.conf

修改或添加:

[Journal]
SystemMaxUse=200M
SystemKeepFree=100M
MaxFileSec=1week

重启服务:

sudo systemctl restart systemd-journald

2️⃣ 立即清理旧日志

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

# 或限制总大小
sudo journalctl --vacuum-size=200M

三、处理 /var/log 下的传统日志

1️⃣ 手动清理(应急)

sudo truncate -s 0 /var/log/syslog
sudo truncate -s 0 /var/log/auth.log

⚠️ 不要用 rm,可能导致服务无法写入

2️⃣ 配置 logrotate(长期方案)

Debian 默认有 logrotate,检查:

ls /etc/logrotate.d/

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

/var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    compress
    delaycompress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

手动执行测试:

sudo logrotate -d /etc/logrotate.conf
sudo logrotate -f /etc/logrotate.conf

四、Docker / Nginx / 应用日志

Docker

docker system prune

限制日志大小(daemon.json):

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

Nginx

sudo logrotate -f /etc/logrotate.d/nginx

五、找出“写日志的元凶”

# 实时查看日志增长
sudo tail -f /var/log/syslog

# 查看哪个进程在写
sudo lsof | grep /var/log

六、推荐的标准做法(总结)

✅ 限制 journal 大小
✅ 开启并配置 logrotate
✅ 对 Docker / 应用日志设上限
✅ 定期清理而不是删除


如果你愿意,可以告诉我:

  • Debian 版本
  • 日志路径(/var/log 还是 journal)
  • 是否服务器 / 容器环境

我可以直接帮你写一套定制配置。

0 踩