linux命令 df du

本文介绍Linux下使用df和du命令进行磁盘及文件容量管理的方法。df命令用于查看文件系统的整体磁盘使用情况,而du命令则用于评估单个文件或目录所占用的空间。文章详细解释了这两个命令的常用选项及其输出结果。

linux命令df du

我们知道磁盘的整体数据是在superblock块中,但是每个个别文件的容量则在inode当中记载的。那些命令行界面线面该如何调出这几个数据呢?

df:列出文件系统的整体磁盘使用量

评估文件系统的磁盘使用量(常用于评估目录所长空间)

df 【-ahikHTm】【目录或文件名】重点内容

-a:列出所有的文件系统,包括系统特有的/proc等文件系统;
-k:以kb容量显示文件系统
-m:以mb容量显示文件系统
-h :以人们较易读的GB,MB,KB等格式执行显示
-H :以M=1000K代替M=1024K的仅为方式
-T :连同该分区的文件系统名称(例如ext3)也列出来
-i :不用磁盘容量,而以inode的数量来显示

df

这里写图片描述

df -a 列出所有的文件系统,包括系统特有的/proc等文件系统

这里写图片描述

df -k 以kb容量显示文件系统

这里写图片描述

df -m 以mb容量显示文件系统

这里写图片描述

df -h 以人们较易读的GB,MB,KB等格式执行显示

这里写图片描述

df -H 以M=1000K代替M=1024K的仅为方式

这里写图片描述

df -T 连同该分区的文件系统名称(例如ext3)也列出来

这里写图片描述

df -i 不用磁盘容量,而以inode的数量来显示

这里写图片描述
说明一下说输出的结果信息:
Filesystem:代表该文件系统是在那个分区,所以列出折别名称。
1k-blocks:说明下面的数字单位是1KB。可利用-h或-m来改变容量。
Used:是用掉的磁盘空间。
Available:剩下的磁盘空间大小。
Use%:磁盘的使用率
Mountedon:磁盘挂载的目录所在。
由于df主要读取的数据几乎都是针对整个文件系统,因此读取的范围主要是在Super block内的信息,所以这个命令显示结果的速度非常快,在显示的结果中需要特别留意的是那个根目录的剩余空间,因为我们所有的数据都是由根目录衍生出来的,因此当根目录的容量剩下0时,就可能出问题。
另外需要注意的是如果使用-a这个参数时,系统会出现/proc这个挂载点,但是里面的东西都是0,不要紧张,/proc的东西都是Linux系统所需要加载的系统数据,而且是挂载在内存当中的,所以当然没有占任何的磁盘空间。

du

du 【-ahskm】 【文件或目录名称】
选项和参数
-a :列出所有文件与目录容量,因为默认仅统计目录下面的文件量而已
-h :以人们较易读的容量格式显示
-s :列出总量而已,而不列出每个各别的目录占用容量
-S :不包括子目录下的统计
-k :以kb列出容量显示
-m :以mb列出容量显示

du 仅统计下面的文件量而已
这里写图片描述
du -a 列出所有的文件和目录容量,
这里写图片描述
du -h 以人们易读的格式显示
这里写图片描述
du -s 列出总量而已,而不列出每个各别的目录占用容量
这里写图片描述
du -S 不包括子目录下的统计
这里写图片描述
du -k 以kb列出容量显示
这里写图片描述
*du -m 以mb列出容量显示*
这里写图片描述
与df不一样的是,du这个命令其实会直接到文件系统去查找所有的文件数据,所以上述命令du -sm /* 命令的运行会执行一小段时间,此外,在默认的情况下,大小的输出是以KB来设计的如果你想要知道目录占了多少容量的话,使用-s就可以。
至于-S这个参数的部分,由于du默认会将所有文件的大小列出,因此你假设值啊/etc下面使用du时,所有文件大小,包括/etc下面的子目录容量也会被计算一次,然后最后的容量,也会加总一次,因此很多的人会认为du分析的结果不正确,所以,如果想要某目录下的全部数据,值或许也可以加上-S的参数,减少子目录的计算。

<think>首先,用户的问题是:“我想了解Linux系统中df命令du命令的区别”。我需要基于提供的引用内容来回答,并确保回答结构清晰、真实可靠。 引用内容总结: - 引用[1]:df检查文件系统磁盘占用情况,du检查磁盘空间占用情况,fdisk用于磁盘分区。 - 引用[2]:du通过搜索文件计算大小,只包括当前存在的文件;df通过文件系统获取空间信息,包括已删除但未释放的文件。 - 引用[3]:df输出包括设备路径、数据块数目、已用和可用块数,以及挂载点;Use%表示普通用户空间使用百分比。 - 引用[4]:df显示系统级别磁盘信息,可监视使用情况;du显示文件大小,有选项如-h、--max-depth、-s。 - 引用[5]:文件大小取决于块大小,例如默认4k,一个1字节文件占用4k空间;这影响dudf的计算。 关键区别: 1. **df(disk free)**:显示文件系统级别的磁盘使用情况,包括所有分区。它报告总空间、已用空间、可用空间和挂载点。df基于文件系统元数据,包括已删除但尚未释放的文件(因为进程仍在使用)。 2. **du(disk usage)**:显示文件或目录级别的磁盘使用情况。它递归计算文件和目录的大小,只包括当前存在的文件。不包括已删除文件。 其他要点: - df更精确于整体空间,因为它包括所有已分配块。 - du用于查看特定目录或文件的空间占用。 - 当文件被删除但仍有进程使用时,df会显示空间被占用,而du不会计入该文件。 - 文件系统块大小影响占用空间;du报告实际文件大小,但df报告块分配。 回答结构: 1. **介绍命令**:简要定义dfdu。 2. **主要区别**:对比它们的功能、计算方式、输出内容。 3. **使用场景**:何时使用df,何时使用du。 4. **示例**:提供简单命令示例以说明。 5. **总结**:强调核心区别。 确保格式: - 行内数学表达式用$...$(可能不适用,除非有数学内容)。 - 独立公式用$$...$$(这里可能不需要)。 - 使用中文回答。 - 生成相关问题。 - 在引用段落末尾添加引用标识。 相关问题生成: 基于主题,生成3-4个相关问题,例如: 1. df命令的常用选项是什么? 2. du命令如何递归计算目录大小? 3. 为什么dfdu的输出有时不一致? 4. 如何解决磁盘空间不足问题? 最后,回答必须以用户问题开始,然后展开。</think>### Linux系统中df命令du命令的区别 在Linux系统中,`df`(disk free)和`du`(disk usage)都是用于磁盘管理的常用命令,但它们的功能、计算方式和适用场景有显著差异。下面我将基于核心区别、工作原理和实际示例,逐步解释它们的区别,确保回答真实可靠(参考了Linux官方文档和常见实践[^1][^2][^3])。 #### 1. **核心功能对比** - **`df` 命令**: - 用于显示**文件系统级别**的磁盘空间使用情况,包括整个磁盘分区或挂载点的总空间、已用空间、可用空间和利用率百分比。 - 它直接从文件系统元数据获取信息,覆盖所有已分配块(包括已删除但未被释放的文件,例如当文件被删除但仍有进程在使用时)。 - 示例输出: ```bash $ df -h # -h选项以人类可读格式显示 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda1 20G 8.2G 11G 44% / ``` 这里,`df` 报告整个分区的使用情况,包括系统保留空间(即使普通用户空间显示100%,管理员仍有空间可用)[^3][^4]。 - **`du` 命令**: - 用于计算**文件或目录级别**的磁盘空间占用情况,递归统计每个文件和子目录的实际大小。 - 它基于文件系统树搜索当前存在的文件,不包括已删除或未释放的文件(因此更关注“实时”数据)。 - 示例输出: ```bash $ du -sh /home # -s选项显示总计,-h以可读格式 4.5G /home ``` 这里,`du` 仅计算 `/home` 目录下所有文件的总和,不涉及系统级元数据[^2][^4]。 #### 2. **关键区别点** | 方面 | `df` 命令 | `du` 命令 | |---------------------|----------------------------------------|----------------------------------------| | **计算方式** | 基于文件系统元数据(如超级块信息),包括所有已分配块。 | 基于文件系统树递归搜索,只统计当前存在的文件。 | | **包括已删除文件** | 是(如果文件被删除但进程仍占用,空间会计入“已用”)。 | 否(只计算未被删除的文件)。 | | **输出粒度** | 系统级(分区或挂载点)。 | 用户级(文件、目录或子目录)。 | | **空间不一致原因** | 当文件被删除但未释放时,`df` 可能显示空间不足,而 `du` 不报告该文件。例如,删除一个大文件后,`df` 仍显示空间占用,直到所有进程释放它[^2][^5]。 | `du` 的输出更“纯净”,但可能低估空间(忽略块大小开销)。 | | **块大小影响** | 间接影响:文件系统块大小(如默认4KB)决定了最小分配单元,但 `df` 报告整体分配。 | 直接影响:文件占用空间按块大小计算(例如1字节文件占用4KB),`du` 显示实际占用块数[^5]。 | | **常用选项** | `-h`(可读格式)、`-i`(inode使用情况)。 | `-h`(可读格式)、`--max-depth=N`(指定目录层级)、`-s`(仅显示总计)。 | #### 3. **为什么输出有时不一致?** - 当文件被删除但未完全释放(例如,进程仍在读写),`df` 会包括这些“幽灵文件”的空间,而 `du` 忽略它们。这可能导致 `df` 显示磁盘已满,但 `du` 找不到大文件。 - **示例场景**:假设你删除了一个10GB的日志文件,但Web服务器进程仍持有它: - `df -h` 可能显示 `/var` 分区已用90%。 - `du -sh /var` 可能只显示5GB(不包括已删除文件)。 解决方法是重启相关进程或使用 `lsof | grep deleted` 找到并释放文件[^2][^5]。 #### 4. **使用场景建议** - **用 `df` 时**: - 监控系统整体磁盘健康(例如检查 `/` 分区是否满)。 - 故障排查空间不足问题(结合 `-i` 检查inode耗尽)。 - **用 `du` 时**: - 查找大文件或目录(例如 `du -h --max-depth=1 /home` 查看用户目录大小)。 - 清理无用数据前评估影响(因为它只计算现有文件)。 - **最佳实践**:日常维护中,先用 `df` 定位问题分区,再用 `du` 深入分析目录[^1][^4]。 #### 5. **总结** `df` 提供“宏观”视图(文件系统级别,包括所有分配块),而 `du` 提供“微观”视图(文件级别,仅当前存在文件)。两者互补:`df` 更适合系统监控,`du` 更适合用户级空间管理。理解它们的区别能避免误判磁盘问题,例如当 `df` 和 `du` 输出不一致时,通常是由于文件删除状态或块大小差异[^2][^3][^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值