Linux磁盘满了怎么清理,大文件查找命令
时间:2026-10-9 07:52 作者:emer 分类: 无
前言
网站突然打不开了?SSH连不上了?一查磁盘100%满了!本文讲怎么查找大文件、清理磁盘空间。
一、查看磁盘使用情况
df命令
df -h
输出:
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 38G 2.0G 95% /
看什么:
- Use%:使用率,超过90%就要注意了
- Avail:可用空间
查看当前目录占用
du -sh
二、查找大文件
查找大于100M的文件
find / -type f -size +100M 2>/dev/null
解释:
- /:从根目录开始找
- -type f:只找文件
- -size +100M:大于100M
- 2>/dev/null:忽略错误信息
查找大于1G的文件
find / -type f -size +1G 2>/dev/null
按大小排序
find / -type f -size +100M 2>/dev/null | xargs du -h | sort -rh
三、查找大目录
查看各目录大小
du -sh /*
一级一级往下找
du -sh /var/*
du -sh /var/log/*
du -sh /var/lib/*
查看前10大目录
du -sh /* | sort -rh | head -10
四、常见大文件位置
1. 日志文件
/var/log/
/var/log/messages
/var/log/nginx/
/var/log/mysql/
2. 临时文件
/tmp/
/var/tmp/
3. 邮件
/var/spool/mail/
4. 数据库文件
/var/lib/mysql/
5. Docker镜像
/var/lib/docker/
6. 上传文件
/www/wwwroot/
/var/www/html/
五、清理方法
清理日志文件
方法1:清空文件
> /var/log/messages
方法2:删除旧日志
find /var/log -name "*.log" -mtime +30 -delete
删除30天前的日志。
清理yum缓存
yum clean all
清理Docker
docker system prune -a
清理临时文件
rm -rf /tmp/*
注意: 正在用的文件别删。
清理旧内核
package-cleanup --oldkernels --count=1
六、查看文件被谁占用
问题: 删了文件但磁盘没释放?
原因: 有进程还在写这个文件。
查看被删除但还被占用的文件
lsof | grep deleted
重启相关进程
systemctl restart nginx
七、常见坑
坑1:删了文件但空间没释放
原因: 进程还在写这个文件。
解决: 重启进程,或者用> 文件名清空。
坑2:日志一直涨
解决: 配置logrotate日志切割。
坑3:Docker占了很多空间
docker system df
清理:
docker system prune -a
八、自动清理脚本
写个脚本定期清理:
#!/bin/bash
# 清理30天前的日志
find /var/log -name "*.log" -mtime +30 -delete
# 清理yum缓存
yum clean all
# 清理Docker
docker system prune -f
加到crontab:
0 3 * * * /bin/bash /root/clean.sh
总结
记住:
- 用
df -h看磁盘使用率 - 用
du -sh /*看哪个目录大 - 用
find / -size +100M找大文件 - 先看日志,再看Docker,再看临时文件
- 删文件前确认不用了
- 删了没释放就重启进程
最常用:
df -h
du -sh /*
find / -type f -size +100M 2>/dev/null
遇到问题加QQ23979811 协助处理