温馨提示×

linux日志过大怎么处理

小樊
42
2026-10-08 08:41:32
栏目: 智能运维

在 Linux 系统中,日志文件过大是常见问题,通常可以从清理、轮转、限制大小、定位源头几个方面处理。下面按实用顺序说明:


一、先确认日志位置和大小

du -sh /var/log/*

常见大日志:

  • /var/log/messages
  • /var/log/syslog
  • /var/log/journal/(systemd 日志)
  • 应用日志(如 nginx、docker、mysql)

二、安全清理日志(不要直接 rm)

1. 清空日志内容(推荐)

> /var/log/syslog
# 或
truncate -s 0 /var/log/syslog

⚠️ 不要 rm 正在写入的日志文件,否则进程仍占用磁盘。

2. 删除旧日志

rm -f /var/log/syslog.*

三、使用 logrotate(最重要)

Linux 自带 logrotate 自动轮转日志。

查看配置

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

手动执行一次

logrotate -f /etc/logrotate.conf

示例(nginx)

/var/log/nginx/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
}

四、限制 systemd 日志大小(journal)

journalctl --disk-usage

限制大小

编辑:

/etc/systemd/journald.conf
SystemMaxUse=500M
MaxRetentionSec=2week

重启:

systemctl restart systemd-journald

清理:

journalctl --vacuum-size=500M

五、找出“写日志狂”的进程

lsof | grep deleted

或:

find /proc/*/fd -type l 2>/dev/null | xargs ls -l 2>/dev/null | grep log

六、应用层控制

  • Nginx:access_log off; 或按大小切割
  • Docker:
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}

七、临时应急方案(磁盘快满)

echo "" > /var/log/syslog
journalctl --vacuum-time=1d

如果你能告诉我:

  • 用的是 哪类系统(CentOS / Ubuntu)
  • 是 系统日志还是某应用日志
  • 磁盘是否已满

我可以给你更精准的操作命令。

0 踩