服务器磁盘占满怎么办?Linux 一键定位大文件与日志清理思路(含命令)
🤖AI摘要
文章讲解服务器磁盘占满的排查与清理方案,先用df确认分区与inode占用,再用du和find定位大目录与大文件。重点给出日志清理思路,包含常见日志目录、删除旧日志、清空超大日志及logrotate轮转配置。还涵盖临时文件与缓存清理、Docker空间回收、数据库与业务目录排查,并建议建立长期防护如监控告警、定时巡检和分区规划,附带一键排查脚本用于快速处理磁盘告警。
服务器磁盘占满怎么办?Linux 一键定位大文件与日志清理思路(含命令)
服务器磁盘占满会导致业务异常、日志写入失败、数据库停服等问题。下面给出一套实用、可落地的排查与清理方案,包含常用命令与清理思路,帮助你快速释放空间并建立长期防护。
一、先确认磁盘使用情况
1. 查看磁盘分区占用
df -h
重点关注使用率接近 90% 以上的分区。
2. 查看 inode 是否耗尽
df -i
如果 inode 用完,即使磁盘还有空间也无法写入文件,需清理小文件。
二、快速定位大文件/大目录
1. 查看根目录下各目录占用
du -h --max-depth=1 / | sort -hr
可快速定位占用最大的一级目录。
2. 进入占用最大的目录继续细分
du -h --max-depth=1 /var | sort -hr
3. 一键查找大文件(按大小排序)
find / -type f -size +500M -exec ls -lh {} \; | awk '{print $NF, $5}' | sort -hr -k2
将阈值 500M 改成需要的大小,如 100M。
三、日志清理思路与命令
1. 常见日志目录
/var/log/data/logs/usr/local/nginx/logs/var/lib/docker/containers
2. 查看日志占用
du -h --max-depth=1 /var/log | sort -hr
3. 清理旧日志(保留 7 天)
find /var/log -type f -mtime +7 -name "*.log" -exec rm -f {} \;
4. 清空超大日志(不中断进程)
: > /var/log/nginx/access.log
不删除文件,仅清空内容,避免服务报错。
5. 使用 logrotate 自动轮转(建议)
检查配置:
cat /etc/logrotate.conf
针对自定义日志可创建:
vim /etc/logrotate.d/custom
示例:
/data/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
四、定位临时文件与缓存
1. 清理临时目录
rm -rf /tmp/*
2. 清理软件缓存(以 yum 为例)
yum clean all
3. 清理系统缓存(谨慎)
sync; echo 3 > /proc/sys/vm/drop_caches
五、Docker 占用过高的处理
1. 查看 Docker 占用
docker system df
2. 清理无用镜像与容器
docker system prune -a
六、数据库与业务文件排查
- MySQL 数据文件:
/var/lib/mysql - MongoDB 数据:
/var/lib/mongo - 业务上传目录:
/data/uploads - 备份目录:
/backup
建议使用:
du -h --max-depth=1 /var/lib | sort -hr
七、建立长期防护方案
- 日志自动轮转:使用 logrotate 配置自动清理
- 空间监控报警:如 Prometheus + Alertmanager
- 定期巡检脚本:结合 cron 定时检查
- 分区合理规划:业务日志与系统分区分离
八、常用排查脚本(可直接用)
#!/bin/bash
echo "===== 磁盘使用情况 ====="
df -h
echo ""
echo "===== 最大目录 ====="
du -h --max-depth=1 / | sort -hr | head -n 10
echo ""
echo "===== 大文件(>500M) ====="
find / -type f -size +500M -exec ls -lh {} \; 2>/dev/null | awk '{print $NF, $5}' | sort -hr -k2 | head -n 20
结语
服务器磁盘占满并不可怕,关键是快速定位问题根源、合理清理日志和缓存、建立自动化防护机制。本文的命令与思路覆盖了大多数 Linux 线上场景,建议收藏备用,遇到磁盘告警时可迅速处理并降低风险。
