返回首页 两个月精通 Shell 脚本

shell 学习四十六天----文件系统的空间信息 df 和 du 命令

文件系统的空间信息

df 命令

df 命令提供单行摘要,一行显示一个加载的问价系统的已使用的和可用的空间。其单位视系统而定,有些使用块,有些则是 KB。大部分现代实现都支持 -k 选项,也就是强制使用 KB 单位,以及 -l(小写字母 L) 选项,仅显示本地文件系统,排除网络加载的文件系统。

df 命令详解

语法:
df [选项] [文件或目录]

用途:
显示一个或多个文件系统内部的 inode 或空间使用情况

主要选项:

  • -i 显示 inode 技术,而非空间
  • -k 显示空间时,以 KB 为单位,而非块
  • -l 小写 L,仅显示本地文件系统

行为:
df 会针对每个文件或目录参数,如果无提供参数,则为所有的文件系统,产生单行表头以识别输出兰,再接上包含该文件或目录的文件系统的使用量报告。

案例:

$df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda3        1032088  262592    717068  27% /
tmpfs             961216       0    961216   0% /dev/shm
/dev/sda1         198337   34004    154093  19% /boot
/dev/sda7       14219628  166640  13330660   2% /home
/dev/sda2        3120456 1874636   1087308  64% /usr
/dev/sda5        1032088  177716    801944  19% /var
/dev/sdb1        2071384   68632   1897528   4% /disk1

分析:
df 命令的输出清单的第一列是代表文件系统对应的设备的路径名 (一般是硬盘上的分区);第二列给出分区包含的数据块 (1024 字节) 的数目;第三四列分别表示一用的和可用的数据块数目。用户也会感到奇怪的是;第三四列数之和不等于第二列中的数据块。这是因为缺省的每个分区都留了少量空间供系统管理员使用。及时遇到普通用户空间已满的情况,管理员仍能登陆和留有解决问题所需的工作空间。清单 Use% 中列表示普通用户空间使用的百分比,及时这一数字达到 100%,分区仍能留有系统管理员使用的空间;最后 Mount on 列表示文件系统的挂载点。

$df -i
Filesystem     Inodes IUsed  IFree IUse% Mounted on
/dev/sda3       65536  6410  59126   10% /
tmpfs          240304     1 240303    1% /dev/shm
/dev/sda1       51200    39  51161    1% /boot
/dev/sda7      903984    86 903898    1% /home
/dev/sda2      198400 57886 140514   30% /usr
/dev/sda5       65536  2356  63180    4% /var
/dev/sdb1      131648    11 131637    1% /disk1

分析:以 inode 模式来显示磁盘使用情况

$df /home
Filesystem     1K-blocks   Used Available Use% Mounted on
/dev/sda7       14219628 166640  13330660   2% /home

分析:显示指定类型磁盘

du 命令

du 命令也是查看使用空间的,但是与 df 命令不同的是 du 命令是对文件和目录磁盘使用的空间的查看,还是和 df 命令有一些区别的。

du 命令详解

语法: du [选项] [文件]

用途:显示一个或多个目录树的空间使用率

主要选项:

  • -k 空间的显示,以 KB 为单位,而非 (与系统相依的) 块 (block)
  • -s 为每个参数,仅显示单行摘要

行为: du 会针对每个文件或目录参数 ---- 如果无提供这类参数则为当前目录,产生一个输出行,其会包含以整数表示的使用率,并接着文件或目录的名称。除非给定 -s 选项,否则每个目录参数会以递归方式查找,为每个嵌套目录产生一个报告行。

案例:

$du       #在 tmp 目录下使用 du 命令
4       ./.ICE-unix
8       .

分析:只显示当前目录下面的子目录的目录大小和大钱目录的总大小,最下面的 8 为当前目录的总大小。注意,只显示目录的。

案例:显示指定文件所占空间的大小
```$du /etc/passwd 4 /etc/passwd


案例:查看指定目录的所占空间  
```$du /root
8       /root/.w3m
4       /root/.pki/nssdb
8       /root/.pki
200     /root

案例:显示多个文件所占大小
```$du /tmp /root 4 /tmp/ert 4 /tmp/.ICE-unix 12 /tmp 8 /root/.w3m 4 /root/.pki/nssdb 8 /root/.pki 200 /root


案例:只显示总和的大小  
```$du -s /root
200     /root

案例:方便阅读的格式
```$du -hs /root 200K /root


案例:文件和目录都显示  
`du -ah /root`

案例:显示多个文件或目录各自占用磁盘空间的大小。还统计他们的总和  
```$du -cs /etc /tmp /root
28048   /etc
12      /tmp
200     /root
28260   总用量

案例:按照空间大小排序
$du /etc| sort -nr | more

du 和 df 的区别

  • df 命令用于查看文件系统的使用情况; 使用 df 命令输出信息的第一个标注: 文件系统 1K- 块 已用 可用 已用 % 挂载点
  • du 命令用于查看文件或目录所占磁盘空间的使用情况。