服务器磁盘爆红紧急处理指南:三招命令行快速解决方案
问题概述
当服务器突然弹出"磁盘空间不足"警告时,网站卡顿、服务崩溃等问题会接踵而至。此时使用命令行快速定位和清理空间是最直接的解决方案。本指南将从"查-删-防"三个维度,用极简命令帮助您快速解决磁盘爆红问题。
一、快速排查:精准定位空间占用源头
1. 查看磁盘整体使用情况
df -h
关键点:
- 重点关注"Use%"列,90%以上的分区即为问题源头
- 示例输出解读:
/dev/sda1 50G 45G 5G 90% /
表示根目录已用45G,需立即处理
2. 深入分析:找出大文件和目录
cd / # 从根目录开始分析
du -sh /* | sort -hr | head -10
常见问题区域:
/var/log
- 日志文件堆积/usr/local
- 软件安装包残留/tmp
- 临时文件未清理/home
- 用户文件堆积
进阶命令:
# 查找大于1GB的文件
find / -type f -size +1G -exec ls -lh {} \;
二、精准清理:五大类冗余文件处理方案
1. 日志文件清理(最常见空间占用)
# 清理30天前的系统日志
find /var/log -type f -name "*.log*" -mtime +30 -exec rm -f {} \;
# 清理服务日志(以Nginx为例)
truncate -s 0 /var/log/nginx/access.log
truncate -s 0 /var/log/nginx/error.log
# 重启服务生成新日志
systemctl restart nginx
2. 软件包与缓存清理
# Debian/Ubuntu系统
apt-get autoclean # 清理旧版本安装包
apt-get autoremove # 删除不再使用的依赖
# CentOS/RHEL系统
yum clean all
yum autoremove
3. 临时文件清理
# 清理/tmp目录(保留正在使用的文件)
find /tmp -type f -atime +7 -delete
# 清理系统日志缓存
journalctl --vacuum-size=100M
4. Docker资源清理(如适用)
# 删除停止的容器
docker container prune -f
# 删除未使用的镜像
docker image prune -a -f
# 删除未使用的卷
docker volume prune -f
5. 大文件处理(谨慎操作)
# 先确认文件用途
ls -lh /path/to/large/file
# 确认无用后再删除
rm -f /path/to/large/file
三、长效防护:建立自动维护机制
1. 设置定时清理任务
crontab -e
添加以下内容:
# 每月1日凌晨1点清理30天前的日志
0 1 1 * * find /var/log -type f -name "*.log*" -mtime +30 -exec rm -f {} \;
# 每周日清理/tmp目录
0 3 * * 0 find /tmp -type f -atime +7 -delete
2. 配置磁盘空间监控
# 安装监控工具(如未安装)
apt-get install sysstat # Debian/Ubuntu
yum install sysstat # CentOS/RHEL
# 设置邮件告警(示例)
echo '*/10 * * * * df -h | awk '\''$5 ~ /%/ && $5+0 > 80 {print "警告: "$6" 分区使用率 "$5 | "mail -s \"磁盘空间告警\" admin@example.com"}'\' >> /etc/crontab
3. 长期解决方案
如果频繁出现空间不足,应考虑:
- 磁盘扩容(LVM或物理扩容)
- 数据迁移到专用存储
- 日志集中管理(如ELK)
扩容示例:
# 查看磁盘分区
lsblk
# 查看LVM信息(如使用LVM)
vgs
lvs
注意事项与最佳实践
安全第一:
- 删除前务必确认文件用途
- 重要数据先备份再操作
- 避免在生产环境直接使用
rm -rf /
等危险命令
推荐工具:
# 可视化分析工具 ncdu # 安装方法 apt-get install ncdu # Debian/Ubuntu yum install ncdu # CentOS/RHEL
服务影响评估:
- 清理前检查服务依赖
- 选择低峰期操作
- 准备回滚方案
通过以上步骤,您不仅能快速解决当前的磁盘空间危机,还能建立长效防护机制,确保服务器持续稳定运行。