0

0

Linux磁盘空间查看命令总结

P粉602998670

P粉602998670

发布时间:2025-09-03 08:06:01

|

1059人浏览过

|

来源于php中文网

原创

答案:通过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
    只会显示顶层文件系统的使用情况,不会把子文件系统的内容算进去。

    Git版本控制与工作流 中文WORD版
    Git版本控制与工作流 中文WORD版

    篇文章是针对git版本控制和工作流的总结,如果有些朋友之前还没使用过git,对git的基本概念和命令不是很熟悉,可以从以下基本教程入手: Git是分布式版本控制系统,与SVN类似的集中化版本控制系统相比,集中化版本控制系统虽然能够令多个团队成员一起协作开发,但有时如果中央服务器宕机的话,谁也无法在宕机期间提交更新和协同开发。甚至有时,中央服务器磁盘故障,恰巧又没有做备份或备份没及时,那就可能有丢失数据的风险。感兴趣的朋友可以过来看看

    下载
  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系统运维工作更加从容。但请记住,任何删除操作都应在充分理解其影响后谨慎执行,尤其是在生产环境中。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

185

2023.09.27

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

387

2023.09.04

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

392

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

572

2023.08.10

数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

269

2023.11.13

drop和delete的区别
drop和delete的区别

drop和delete的区别:1、功能与用途;2、操作对象;3、可逆性;4、空间释放;5、执行速度与效率;6、与其他命令的交互;7、影响的持久性;8、语法和执行;9、触发器与约束;10、事务处理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

210

2023.12.29

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1349

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

703

2023.06.29

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

23

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.4万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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