首页 > 运维 > linux运维 > 正文

Linux磁盘空间查看命令总结

P粉602998670
发布: 2025-09-03 08:06:01
原创
1027人浏览过
答案:通过df和du命令组合使用可有效查看Linux磁盘空间。df -h查看文件系统整体使用情况,du -sh定位具体目录占用,du --max-depth=1 | sort -rh快速找出大文件,结合lsof、find、ncdu等工具可排查差异、清理空间并实现高效管理。

linux磁盘空间查看命令总结

在Linux系统里,查看磁盘空间是日常运维最基础也最频繁的操作之一。它能帮你快速了解系统的健康状况,避免潜在的存储问题,无论是排查性能瓶颈还是日常监控,都离不开这些命令的辅助。核心观点就是,我们主要依赖

df
登录后复制
du
登录后复制
这两个命令,它们各有侧重,理解其差异和组合使用是关键。

解决方案

要有效地查看Linux磁盘空间,我们通常会组合使用几个核心命令,它们从不同维度提供信息。

我个人最常用的,也是最直观的,就是

df
登录后复制
命令了。每次系统报警或者感觉哪里不对劲,第一个想到的就是它。

df -h
登录后复制

这个命令会列出所有文件系统(包括物理磁盘、虚拟文件系统等)的磁盘使用情况。

-h
登录后复制
参数让输出结果更易读,以人类可读的格式(如GB、MB)显示大小。你会看到文件系统名称、总大小、已用空间、可用空间、使用百分比以及挂载点。这就像是系统层面的一个总览图,一眼就能看出哪个分区快满了。

然而,

df
登录后复制
命令只能看到文件系统的整体使用情况,如果你想深入了解某个特定目录或文件占用了多少空间,那就得请出
du
登录后复制
命令了。
du
登录后复制
是“disk usage”的缩写,它会递归地统计指定目录或文件的磁盘使用量。

du -sh /path/to/directory
登录后复制

-s
登录后复制
参数表示只显示总计(summary),不列出子目录的详细信息;
-h
登录后复制
同样是为了可读性。当你发现某个分区通过
df
登录后复制
显示已经爆满,但不知道具体是哪个目录导致的时候,
du -sh
登录后复制
配合路径,就能帮你快速定位。比如,我经常会用
du -sh /var/log
登录后复制
来检查日志文件是不是又“失控”了。

如何快速定位Linux系统中占用空间最大的文件或目录?

df -h
登录后复制
告诉你某个分区空间告急,但你一头雾水不知道具体是哪个“元凶”时,定位大文件或大目录就成了当务之急。这其实是一个非常经典的场景,我几乎每个月都会遇到几次。

最直接有效的方法就是结合

du
登录后复制
命令和一些管道操作。

du -h --max-depth=1 /path/to/check | sort -rh
登录后复制

让我来拆解一下这个命令:

  • du -h /path/to/check
    登录后复制
    : 这部分我们已经熟悉了,它会列出
    /path/to/check
    登录后复制
    下所有子目录和文件的磁盘使用情况。
  • --max-depth=1
    登录后复制
    : 这是一个非常实用的参数,它告诉
    du
    登录后复制
    只深入一层目录。如果你不加这个,在一个很大的文件系统上,
    du
    登录后复制
    会遍历所有子目录,耗时会非常长,而且输出会爆炸。我通常会从根目录
    /
    登录后复制
    或者
    /var
    登录后复制
    /home
    登录后复制
    这些大分区开始,然后逐步深入。
  • |
    登录后复制
    : 管道符,将
    du
    登录后复制
    的输出作为
    sort
    登录后复制
    命令的输入。
  • sort -rh
    登录后复制
    : 这是排序的关键。
    • -r
      登录后复制
      表示反向排序(从大到小)。
    • -h
      登录后复制
      表示按照人类可读的格式(如10G、200M)进行排序。这很重要,因为
      du -h
      登录后复制
      输出的单位是带字母的,普通的
      sort
      登录后复制
      无法正确识别。

通过这个命令,你就能一目了然地看到当前目录下,哪些一级子目录或文件占用了最多的空间。然后,你可以根据结果,对占用最大的目录重复执行这个命令,一层层地深入,直到找到具体的罪魁祸首。比如,我发现

/var
登录后复制
很大,我就再
du -h --max-depth=1 /var | sort -rh
登录后复制
,直到定位到具体的日志文件或者缓存目录。

理解df和du命令的统计差异及其原因

这真的是一个经典的“坑”,很多初学者都会在这里犯迷糊,甚至连我这种老手,偶尔也会因为一时的疏忽而误判。

df
登录后复制
du
登录后复制
在某些情况下,显示的结果可能会有显著差异,理解这些差异的根本原因,对于准确判断磁盘使用情况至关重要。

简单来说:

  • df
    登录后复制
    统计的是文件系统的已用空间,它看的是文件系统的元数据,即有多少数据块被标记为已使用。
  • du
    登录后复制
    统计的是文件和目录实际占用的磁盘空间,它会遍历文件系统中的文件,累加它们的大小。

那么,差异从何而来呢?

  1. 已删除但仍被进程占用的文件: 这是最常见也最让人头疼的原因。当一个文件被删除后,如果仍有进程(比如一个日志服务)打开着这个文件句柄,那么操作系统并不会立即释放这个文件所占用的磁盘空间。

    df
    登录后复制
    会继续将这部分空间算作“已用”,因为它并没有被真正释放回文件系统。但
    du
    登录后复制
    在遍历时,已经找不到这个文件了,所以不会将其计入。我遇到过好几次日志文件被删了,但服务没重启,导致
    df
    登录后复制
    显示空间满,
    du
    登录后复制
    却“找不到”大文件的诡异情况。

    • 如何排查?
      lsof | grep deleted
      登录后复制
      可以帮你找出那些被删除但仍在使用的文件。
  2. 硬链接:

    du
    登录后复制
    在统计时,如果遇到多个硬链接指向同一个文件,它会多次计算这个文件的大小。而
    df
    登录后复制
    则不会,因为它只关心文件系统层面实际占用了多少数据块。不过,现代
    du
    登录后复制
    版本通常会处理这种情况,避免重复计算,但旧版本或特定场景下仍可能出现。

  3. 挂载点: 如果一个目录下面又挂载了另一个文件系统,

    du
    登录后复制
    在不加
    --xdev
    登录后复制
    (或
    -x
    登录后复制
    )参数的情况下,会“钻”进子文件系统去计算空间。而
    df
    登录后复制
    只会显示顶层文件系统的使用情况,不会把子文件系统的内容算进去。

    BibiGPT-哔哔终结者
    BibiGPT-哔哔终结者

    B站视频总结器-一键总结 音视频内容

    BibiGPT-哔哔终结者 28
    查看详情 BibiGPT-哔哔终结者
  4. 文件系统保留空间: 某些文件系统(如ext系列)会默认保留一部分空间(通常是5%)供root用户使用,以防止文件系统完全写满导致系统崩溃。

    df
    登录后复制
    会把这部分空间算作“已用”或者“不可用”,因为它不向普通用户开放。而
    du
    登录后复制
    只关心实际文件占用的空间,不会考虑这部分保留空间。

  5. 块大小差异: 文件系统通常以块(block)为单位分配空间。即使一个文件很小,它也至少会占用一个块。

    du
    登录后复制
    会累加文件实际占用的块数,而
    df
    登录后复制
    则直接看文件系统层面的块使用情况。这通常不会造成巨大差异,但在文件数量极多且文件都很小的情况下,也可能导致细微差别。

理解这些,能让你在面对

df
登录后复制
du
登录后复制
数据不一致时,不再那么恐慌,而是能有条不紊地进行排查。

除了基本查看,还有哪些高级技巧能更高效地管理磁盘空间?

仅仅知道如何查看磁盘空间是远远不够的,我们还需要一些高级技巧来更高效地管理它,预防问题于未然,或者在问题发生时能快速响应。这不光是命令的堆砌,更是一种思维方式的转变。

  1. 使用

    ncdu
    登录后复制
    进行交互式分析: 如果说
    du
    登录后复制
    配合
    sort
    登录后复制
    是命令行下的“手工活”,那
    ncdu
    登录后复制
    (NCurses Disk Usage)就是一款图形化的“瑞士军刀”。它提供了一个基于终端的交互式界面,能让你像文件管理器一样浏览目录结构,并直观地看到每个目录的大小,支持排序、删除文件等操作。

    sudo apt install ncdu # Debian/Ubuntu
    sudo yum install ncdu # CentOS/RHEL
    ncdu /path/to/check
    登录后复制

    ncdu
    登录后复制
    的强大之处在于它的交互性。你可以用方向键上下移动,按Enter键进入子目录,按
    d
    登录后复制
    键删除文件或目录(需要谨慎!),按
    g
    登录后复制
    键切换显示模式(百分比/大小)。这对于快速定位和清理大文件,效率远高于反复敲
    du
    登录后复制
    命令。我经常用它来清理那些因为开发或测试留下来的巨型临时文件。

  2. 结合

    find
    登录后复制
    命令查找特定类型或时间的文件:清理磁盘空间时,我们往往需要查找特定类型(如日志文件、备份文件)或者在某个时间点之前创建/修改的文件。
    find
    登录后复制
    命令在这方面表现出色。

    • 查找大文件:

      find /path/to/search -type f -size +1G -print0 | xargs -0 du -h | sort -rh
      登录后复制

      这个命令会查找

      /path/to/search
      登录后复制
      目录下所有大于1GB的文件,然后通过
      xargs
      登录后复制
      将结果传递给
      du -h
      登录后复制
      进行格式化显示,并最终排序。
      print0
      登录后复制
      xargs -0
      登录后复制
      是为了正确处理文件名中含有空格或特殊字符的情况。

    • 查找旧文件并删除(慎用!):

      find /var/log -type f -name "*.log" -mtime +30 -delete
      登录后复制

      这个命令会查找

      /var/log
      登录后复制
      目录下所有30天前修改过的
      .log
      登录后复制
      文件,并直接删除。
      -mtime +30
      登录后复制
      表示修改时间超过30天,
      -delete
      登录后复制
      则直接执行删除操作。在生产环境中,这样的操作需要极其谨慎,最好先用
      -print
      登录后复制
      代替
      -delete
      登录后复制
      来预览将要删除的文件。

  3. 监控文件系统事件: 虽然这不是直接查看磁盘空间,但通过监控文件系统事件,可以帮助你提前发现潜在的磁盘空间问题。例如,使用

    inotify-tools
    登录后复制
    可以监控特定目录的文件创建、修改、删除等事件,当有异常大量的文件写入时,可以及时发出警报。

    # 示例:监控 /var/log 目录的文件创建事件
    inotifywait -m -r /var/log -e create
    登录后复制

    这对于那些日志文件增长过快、或者有未知进程在偷偷写入大量数据的场景非常有用。我曾经通过这种方式,定位到一个因为配置错误导致疯狂生成临时文件的服务。

这些高级技巧,将查看磁盘空间从被动响应提升到主动管理和预防,让你的Linux系统运维工作更加从容。但请记住,任何删除操作都应在充分理解其影响后谨慎执行,尤其是在生产环境中。

以上就是Linux磁盘空间查看命令总结的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号