Linux提示根分区爆满的常用排查命令整理

 更新时间:2026年09月02日 09:03:36   作者:曦紫沐  
当Linux服务器的根分区使用率达到100%时,系统运行将变得异常缓慢甚至崩溃,本文提供了一套完整的磁盘空间排查方案,从快速定位大文件、分析常见占用源到安全清理方法,手把手教你解决磁盘空间危机

摘要:当Linux服务器的根分区使用率达到100%时,系统运行将变得异常缓慢甚至崩溃。本文提供一套完整的磁盘空间排查方案,从快速定位大文件、分析常见占用源到安全清理方法,手把手教你解决磁盘空间危机。无论你是系统管理员还是开发人员,这些命令都能成为你工具箱中的利器。

当磁盘告急时,你首先应该做什么?

看到 df -h 输出中刺眼的 100% 使用率,很多人的第一反应是慌乱删除文件。但请先冷静!盲目的删除可能导致系统损坏或数据丢失。正确的做法是:先诊断,后治疗。

第一步:快速定位问题根源

1.1 查看磁盘整体使用情况

# 查看所有挂载点的使用情况
df -h

# 重点关注根分区
df -h /

如果发现根分区使用率超过90%,就该立即行动了。

1.2 找出占用空间最大的目录

# 一级目录分析(最常用)
du -h --max-depth=1 / 2>/dev/null | sort -rh | head -20

# 输出示例:
# 23G     /var
# 16G     /home
# 5.5G    /usr
# 1.2G    /opt
# ...其他目录

技巧2>/dev/null 用于屏蔽权限错误信息,让输出更干净。

1.3 深入分析具体目录

# 如果发现/var很大,继续深入
du -h --max-depth=2 /var 2>/dev/null | sort -rh | head -20

# 输出可能显示:
# 22G     /var/lib/docker
# 500M    /var/log
# 200M    /var/cache/apt

第二步:针对性排查常见"空间杀手"

2.1 Docker - 最常见的占用源

# 查看Docker整体使用情况
docker system df

# 检查Docker存储目录
du -h --max-depth=2 /var/lib/docker/ 2>/dev/null | sort -rh

# 检查容器日志(容易忽略的大文件)
find /var/lib/docker/containers -name "*.log" -size +100M 2>/dev/null

2.2 系统日志 - 沉默的空间吞噬者

# 查看日志目录大小
du -h /var/log/ 2>/dev/null | sort -rh | head -10

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

# 查找大日志文件
find /var/log -type f -size +100M 2>/dev/null | xargs ls -lh

2.3 软件包缓存 - 容易被遗忘的积累

# 查看apt缓存大小
du -sh /var/cache/apt/archives/

# 查看snap缓存
du -sh /var/lib/snapd/cache/

2.4 用户目录 - 隐藏的大文件

# 查找所有大于1GB的文件
find /home -type f -size +1G 2>/dev/null | xargs ls -lh

# 查找所有大于100MB的日志文件
find / -type f -name "*.log" -size +100M 2>/dev/null

第三步:使用高级工具进行可视化分析

3.1 安装并使用ncdu(强烈推荐)

# 安装ncdu
sudo apt-get install ncdu  # Debian/Ubuntu
sudo yum install ncdu      # CentOS/RHEL

# 扫描根目录
ncdu /

# 扫描特定目录
ncdu /var

ncdu优势

  • 交互式界面,支持键盘导航
  • 实时显示目录大小百分比
  • 可以直接删除文件(按d键)
  • 比命令行更直观

3.2 使用find命令进行复杂搜索

# 查找7天前修改的大于100M的文件
find / -type f -size +100M -mtime +7 2>/dev/null

# 查找空目录
find / -type d -empty 2>/dev/null

# 查找最近3天修改的大文件
find / -type f -size +50M -mtime -3 2>/dev/null

第四步:安全清理策略

4.1 Docker清理(按需选择)

# 温和清理:删除未使用的资源
docker system prune

# 强力清理:删除所有未使用的镜像、容器、卷等
docker system prune -a --volumes

# 选择性清理
docker container prune    # 只清理停止的容器
docker image prune       # 只清理悬空镜像
docker volume prune     # 只清理未使用的卷

4.2 日志文件清理

# 清理系统日志(保留最近7天)
journalctl --vacuum-time=7d

# 或者限制总大小(保留200M)
journalctl --vacuum-size=200M

# 清理应用日志文件(示例:清空Nginx日志)
> /var/log/nginx/access.log
> /var/log/nginx/error.log

# 清理旧的日志归档
find /var/log -name "*.gz" -o -name "*.1" -o -name "*.bz2" -delete

4.3 包管理器缓存清理

# APT清理(Debian/Ubuntu)
sudo apt-get autoclean   # 删除旧版本包
sudo apt-get clean       # 删除所有已下载包
sudo apt-get autoremove  # 删除不需要的依赖

# YUM清理(CentOS/RHEL)
sudo yum clean all

# 清理pip缓存
pip cache purge

4.4 临时文件清理

# 清理系统临时目录
sudo rm -rf /tmp/*

# 清理用户临时目录
rm -rf ~/.cache/*
rm -rf ~/.local/share/Trash/*

第五步:预防措施与监控

5.1 设置磁盘使用监控

# 添加到crontab,每天检查一次
echo "0 2 * * * df -h >> /var/log/disk_usage.log" | crontab -

# 或者使用监控脚本
cat > /usr/local/bin/check_disk.sh << 'EOF'
#!/bin/bash
THRESHOLD=90
USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ $USAGE -gt $THRESHOLD ]; then
    echo "警告:根分区使用率 ${USAGE}% 超过阈值 ${THRESHOLD}%" | mail -s "磁盘空间告警" admin@example.com
fi
EOF
chmod +x /usr/local/bin/check_disk.sh

5.2 Docker配置优化

# 限制Docker日志大小
sudo mkdir -p /etc/docker
sudo cat > /etc/docker/daemon.json << EOF
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
EOF
sudo systemctl restart docker

5.3 日志轮转配置

# 检查并配置logrotate
cat /etc/logrotate.conf
# 确保有合理的配置,如:
# weekly      # 每周轮转
# rotate 4    # 保留4个备份
# compress    # 压缩旧日志

实用小贴士

  1. 黄金法则:永远不要删除你不了解的文件
  2. 备份优先:重要数据清理前先备份
  3. 循序渐进:清理后观察效果,不要一次性删除太多
  4. 定期维护:将清理任务加入日常维护计划
  5. 使用LVM:如果可能,使用LVM以便动态调整分区大小

常见问题快速诊断表

症状可能原因检查命令
空间突然爆满日志文件暴增find /var/log -size +100M
空间缓慢增长Docker积累docker system df
空间持续不足用户文件过多du -h --max-depth=2 /home
空间异常波动临时文件未清理ls -la /tmp/

写在最后

磁盘空间管理是每个Linux用户和系统管理员的必修课。记住,预防胜于治疗。建立定期的磁盘检查习惯,配置合理的日志轮转策略,监控关键目录的使用情况,这些都能帮助你避免"磁盘爆满"的紧急情况。

当问题真的出现时,不要慌张。按照本文的步骤:诊断 → 定位 → 清理 → 预防,你就能从容应对。

到此这篇关于Linux提示根分区爆满的常用排查命令整理的文章就介绍到这了,更多相关Linux根分区爆满排查内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Ubuntu中apt和apt-get命令的区别

    详解Ubuntu中apt和apt-get命令的区别

    在Ubuntu及其他基于Debian的Linux发行版中,软件包管理是系统维护的一个重要方面,apt和apt-get是两个常用的命令行工具,用于安装、更新、删除和管理软件包,本文给大家介绍了Ubuntu中apt和apt-get命令的区别,需要的朋友可以参考下
    2024-06-06
  • 浅析Linux root设置初始值的方法

    浅析Linux root设置初始值的方法

    ubuntu默认不允许使用root登录,因此初始root账户是不能使用的,需要在普通账户下利用sudo权限修改root密码。这篇文章主要介绍了Linux root设置初始值的方法,需要的朋友可以参考下
    2019-11-11
  • 在Linux系统上创建软连接和硬连接的方法

    在Linux系统上创建软连接和硬连接的方法

    这篇文章主要介绍了在Linux系统上创建软连接和硬连接的方法,通过执行 man ln 命令,可以看到这是在文件之间建立链接,而没有提及是软链接或硬链接,文中通过代码和图文介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • Linux使用Crontab定时访问某个路由地址的方法

    Linux使用Crontab定时访问某个路由地址的方法

    我们很多工作都是需要在某个特定的时间去执行它,下面这篇文章主要给大家介绍了关于Linux使用Crontab定时访问某个路由地址的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-06-06
  • 腾讯云服务器部署前后分离项目之前端部署

    腾讯云服务器部署前后分离项目之前端部署

    本文主要介绍了腾讯云服务器部署前后分离项目之前端部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • linux里面软连接的创建与删除方式

    linux里面软连接的创建与删除方式

    软连接(SymbolicLink)在Linux/Unix系统中类似于Windows的快捷方式,用于创建一个指向另一个文件或目录的引用,它可以便捷访问、版本管理、节省空间和跨文件系统,使用`ln -s`命令创建软连接,删除时使用`rm`命令,注意路径和权限
    2026-01-01
  • apache禁止遍历目录的实现步骤

    apache禁止遍历目录的实现步骤

    本文主要介绍了apache禁止遍历目录的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • 详解CentOS7使用firewalld打开关闭防火墙与端口

    详解CentOS7使用firewalld打开关闭防火墙与端口

    本篇文章主要介绍了CentOS7使用firewalld打开关闭防火墙与端口,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-01-01
  • linux安装jdk,tomcat 配置vsftp远程连接的步骤

    linux安装jdk,tomcat 配置vsftp远程连接的步骤

    这篇文章主要介绍了linux安装jdk,tomcat 配置vsftp远程连接,需要的朋友可以参考下
    2015-04-04
  • 浅谈linux中sed命令和awk命令的使用

    浅谈linux中sed命令和awk命令的使用

    这篇文章主要介绍了浅谈linux中sed命令和awk命令的使用,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01

最新评论