Linux中 du (详解)和 df (详解)以及它们的区别


1、两者区别

  •  du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和。
  •  df,disk free,通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件, df记录的是通过文件系统获取到的文件的大小,它比du强的地方就是能够看到已经删除的文件,而且计算大小的时候,把这一部分的空间也加上了,更精确了。

  • 即du命令是实时检索,而df命令不是实时检索。当文件系统也确定删除了该文件后,这时候du与df就一致了。

2、du命令

1、命令格式:

du  [选项]  [文件]

2、命令功能:

显示每个文件和目录的磁盘使用空间。

3.命令参数:

-a或-all  列出所you的文件与目录容量,因为默认仅统计目录下面的文件量  
-b或-bytes  显示目录或文件大小时,以byte为单位。   
-c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-k或--kilobytes  以KB(1024bytes)为单位输出。
-m或--megabytes  以MB为单位输出。   
-s或--summarize  仅显示总量,只列出最后加总的值,而不列出每个个别的目录占用容量。
-S或--separate-dirs   不包括子目录下的总计,与 -s 有点差别
-h或--human-readable  以K,M,G为单位,提高信息的可读性。
-x或--one-file-xystem  以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。   
-X<文件>或--exclude-from=<文件>  在<文件>指定目录或文件。   
--exclude=<目录或文件>         略过指定的目录或文件。    
-D或--dereference-args   显示指定符号链接的源文件大小。   
-H或--si  与-h参数相同,但是K,M,G是以1000为换算单位。   
-l或--count-links   重复计算硬件链接的文件。   

4、使用实例:

实例1:显示目录或者文件所占空间 

命令:
du

输出:
[root@server1 ~]# du
48	./nginx-1.14.2/auto/cc
...
2468	./nginx-1.15.8/objs
9464	./nginx-1.15.8
20980	.

说明:
直接输入 du 没有加任何选项时,则 du 会分析【目前所在目录】的文件与目录所占用的磁盘空间。
但是,实际显示时,仅显示目录容量(不含文件),因此(.)目录有很多文件没有列出来。
所以全部的目录相加不会等于(.)的容量,此外,输出的数据为 1K 大小的容量单位

实例2:显示指定文件所占空间

命令:
du date.txt

输出:
[root@server1 ~]# du date.txt 
4	date.txt

实例3:查看指定目录的所占空间

名令:
du nginx-1.14.2

输出:
[root@server1 ~]# du nginx-1.14.2
48	nginx-1.14.2/auto/cc
...
9348	nginx-1.14.2

实例4:显示多个文件所占空间

命令:
du nginx-1.14.2.tar.gz nginx-1.15.8.tar.gz 

输出:
[root@server1 ~]# du nginx-1.14.2.tar.gz nginx-1.15.8.tar.gz 
992	nginx-1.14.2.tar.gz
1004	nginx-1.15.8.tar.gz

实例5:只显示总和的大小

命令:
du -s 或du -s .

输出:
[root@server1 ~]# du -s
20980	.
[root@server1 ~]# du -s nginx-1.14.2
9348	nginx-1.14.2

实例6:方便阅读的格式显示

命令:
du -h nginx-1.14.2

输出:
[root@server1 ~]# du -h nginx-1.14.2
48K	nginx-1.14.2/auto/cc
...
9.2M	nginx-1.14.2

实例7:文件和目录都显示

命令:
du -ah nginx-1.14.2

输出:
[root@server1 ~]# du -ah nginx-1.14.2
4.0K	nginx-1.14.2/auto/cc/acc
...
8.0K	nginx-1.14.2/src/stream/ngx_stream_upstream_round_robin.h
12K	nginx-1.14.2/src/stream/ngx_stream_upstream_zone_module.c
32K	nginx-1.14.2/src/stream/ngx_stream_variables.c
4.0K	nginx-1.14.2/src/stream/ngx_stream_variables.h
8.0K	nginx-1.14.2/src/stream/ngx_stream_write_filter_module.c
...
9.2M	nginx-1.14.2

实例8:显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和

命令:
du -c nginx-1.14.2.tar.gz nginx-1.15.8.tar.gz 

输出:
[root@server1 ~]# du -c nginx-1.14.2.tar.gz nginx-1.15.8.tar.gz 
992	nginx-1.14.2.tar.gz
1004	nginx-1.15.8.tar.gz
1996	total

说明:
加上-c选项后,du不仅显示两个目录各自占用磁盘空间的大小,还在最后一行统计它们的总和。

实例9:按照空间大小排序

命令:
du |sort -nr|more 

输出:
[root@server1 ~]# du |sort -nr|more 
20980	.
9464	./nginx-1.15.8
940	./nginx-1.14.2/objs/src/http
888	./nginx-1.15.8/src/core
388	./nginx-1.15.8/src/http/v2
140	./nginx-1.15.8/contrib/vim
136	./.vim
40	./nginx-1.15.8/conf
...
0	./nginx-1.14.2/objs/src/http/modules/perl

实例10:输出当前目录下各个子目录所使用的空间

[root@server1 ~]# du -h --max-depth=1
9.2M	./nginx-1.14.2
136K	./.vim
9.3M	./nginx-1.15.8
21M	.

3、df命令

Linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

1、命令格式:

df [选项] [文件]

2、命令功能:

显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示。


3.命令参数:

必要参数:

-a 列出所有的文件系统,包括系统特有的 /proc 等文件系统
-k 以 KBytes 的容量显示各文件系统。命令 df -k 同命令 df
-m 以 MBytes 的容量显示各文件系统
-h 以人们较易阅读的 GBytes、MBytes、KBytes 等格式自行显示
-H 等于“-h”,但是计算式,1K=1000,而不是1K=1024
-i 不用磁盘容量,而以 inode 的数量来显示
-l 只显示本地文件系统。命令 df -l 同命令 df
--no-sync 忽略 sync 命令
-P 输出格式为POSIX
--sync 在取得磁盘信息前,先执行sync命令
-T  连同该磁盘分区的文件系统名称(例如 xfs)也列出
--block-size=<区块大小> 指定区块大小
-t <文件系统类型> 只显示选定文件系统的磁盘信息
-x <文件系统类型> 不显示选定文件系统的磁盘信息
--help 显示帮助信息
--version 显示版本信息

4、使用实例:

实例1:显示磁盘使用情况

命令:
df

输出:
[root@server1 ~]# df
Filesystem            1K-blocks    Used Available Use% Mounted on
/dev/mapper/rhel-root  17811456 1196004  16615452   7% /
devtmpfs                 497216       0    497216   0% /dev
tmpfs                    508188       0    508188   0% /dev/shm
tmpfs                    508188    6736    501452   2% /run
tmpfs                    508188       0    508188   0% /sys/fs/cgroup
/dev/vda1               1038336  141508    896828  14% /boot
tmpfs                    101640       0    101640   0% /run/user/0

说明:

  • Filesystem:代表文件系统对应的设备文件的路径名(一般是硬盘上的分区);
  • 1K-blocks:说明下面的数字单位是  1KB,可利用 -h 或 -m 来改变容量;
  • Used:使用掉的磁盘空间;
  • Available:也就是剩下的磁盘空间大小;用户也许会感到奇怪的是,第3,4列块数之和不等于第2列中的块数。这是因为缺省的每个分区都留了少量空间供系统管理员使用。即使遇到普通用户空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间。清单中;
  • Use%:就是磁盘的使用率,如果使用率高达 90%  以上,最好注意一下,免得容量不足造成系统问题,例如最容易占满的  /var/spool/mail  这个保存邮件的目录;
  • Mounted  on:就是磁盘的挂载目录(挂载点)。

实例2:以inode模式来显示磁盘使用情况

命令:
df -i

输出:
[root@server1 ~]# df -i
Filesystem             Inodes IUsed   IFree IUse% Mounted on
/dev/mapper/rhel-root 8910848 35051 8875797    1% /
devtmpfs               124304   374  123930    1% /dev
tmpfs                  127047     1  127046    1% /dev/shm
tmpfs                  127047   410  126637    1% /run
tmpfs                  127047    16  127031    1% /sys/fs/cgroup
/dev/vda1              524288   328  523960    1% /boot
tmpfs                  127047     1  127046    1% /run/user/0

实例3:显示指定类型磁盘

命令:
df -t xfs

输出:
[root@server1 ~]# df -t xfs
Filesystem            1K-blocks    Used Available Use% Mounted on
/dev/mapper/rhel-root  17811456 1196004  16615452   7% /
/dev/vda1               1038336  141508    896828  14% /boot

实例4:列出各文件系统的i节点使用情况

命令:
df -ai

输出:
[root@server1 ~]# df -ai
Filesystem             Inodes IUsed   IFree IUse% Mounted on
rootfs                      -     -       -     - /
sysfs                       0     0       0     - /sys
proc                        0     0       0     - /proc
devtmpfs               124304   374  123930    1% /dev
securityfs                  0     0       0     - /sys/kernel/security
tmpfs                  127047     1  127046    1% /dev/shm
devpts                      0     0       0     - /dev/pts
tmpfs                  127047   412  126635    1% /run
tmpfs                  127047    16  127031    1% /sys/fs/cgroup
cgroup                      0     0       0     - /sys/fs/cgroup/systemd
pstore                      0     0       0     - /sys/fs/pstore
cgroup                      0     0       0     - /sys/fs/cgroup/devices
cgroup                      0     0       0     - /sys/fs/cgroup/hugetlb
cgroup                      0     0       0     - /sys/fs/cgroup/freezer
cgroup                      0     0       0     - /sys/fs/cgroup/net_cls,net_prio
cgroup                      0     0       0     - /sys/fs/cgroup/cpu,cpuacct
cgroup                      0     0       0     - /sys/fs/cgroup/memory
cgroup                      0     0       0     - /sys/fs/cgroup/cpuset
cgroup                      0     0       0     - /sys/fs/cgroup/perf_event
cgroup                      0     0       0     - /sys/fs/cgroup/blkio
cgroup                      0     0       0     - /sys/fs/cgroup/pids
configfs                    0     0       0     - /sys/kernel/config
/dev/mapper/rhel-root 8910848 35051 8875797    1% /
systemd-1                   0     0       0     - /proc/sys/fs/binfmt_misc
debugfs                     0     0       0     - /sys/kernel/debug
hugetlbfs                   0     0       0     - /dev/hugepages
mqueue                      0     0       0     - /dev/mqueue
/dev/vda1              524288   328  523960    1% /boot
tmpfs                  127047     1  127046    1% /run/user/0

系统里面其实还有很多的特殊文件系统存在,那些比较特殊的文件系统几乎都是在内存当中,例如 /proc 这个挂载点。因此,这些特殊的文件系统都不会占据磁盘空间。

实例5:列出文件系统的类型

命令:
df -T

输出:
[root@server1 ~]# df -T
Filesystem            Type     1K-blocks    Used Available Use% Mounted on
/dev/mapper/rhel-root xfs       17811456 1196004  16615452   7% /
devtmpfs              devtmpfs    497216       0    497216   0% /dev
tmpfs                 tmpfs       508188       0    508188   0% /dev/shm
tmpfs                 tmpfs       508188    6740    501448   2% /run
tmpfs                 tmpfs       508188       0    508188   0% /sys/fs/cgroup
/dev/vda1             xfs        1038336  141508    896828  14% /boot
tmpfs                 tmpfs       101640       0    101640   0% /run/user/0

实例6:将 /boot 下面的可用的磁盘容量以易读的容量格式显示

命令:
df -h /boot

输出:
[root@server ~]# df -h /boot/
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1       197M  102M   95M  52% /boot

实例7:以更易读的方式显示目前磁盘空间和使用情况 

命令:


输出:
[root@server1 ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   17G  1.2G   16G   7% /
devtmpfs               486M     0  486M   0% /dev
tmpfs                  497M     0  497M   0% /dev/shm
tmpfs                  497M  6.6M  490M   2% /run
tmpfs                  497M     0  497M   0% /sys/fs/cgroup
/dev/vda1             1014M  139M  876M  14% /boot
tmpfs                  100M     0  100M   0% /run/user/0


[root@server1 ~]# df -H
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   19G  1.3G   18G   7% /
devtmpfs               510M     0  510M   0% /dev
tmpfs                  521M     0  521M   0% /dev/shm
tmpfs                  521M  7.0M  514M   2% /run
tmpfs                  521M     0  521M   0% /sys/fs/cgroup
/dev/vda1              1.1G  145M  919M  14% /boot
tmpfs                  105M     0  105M   0% /run/user/0


[root@server1 ~]# df -lh
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   17G  1.2G   16G   7% /
devtmpfs               486M     0  486M   0% /dev
tmpfs                  497M     0  497M   0% /dev/shm
tmpfs                  497M  6.6M  490M   2% /run
tmpfs                  497M     0  497M   0% /sys/fs/cgroup
/dev/vda1             1014M  139M  876M  14% /boot
tmpfs                  100M     0  100M   0% /run/user/0


[root@server1 ~]# df -k
Filesystem            1K-blocks    Used Available Use% Mounted on
/dev/mapper/rhel-root  17811456 1196004  16615452   7% /
devtmpfs                 497216       0    497216   0% /dev
tmpfs                    508188       0    508188   0% /dev/shm
tmpfs                    508188    6740    501448   2% /run
tmpfs                    508188       0    508188   0% /sys/fs/cgroup
/dev/vda1               1038336  141508    896828  14% /boot
tmpfs                    101640       0    101640   0% /run/user/0

说明:

-h更具目前磁盘空间和使用情况 以更易读的方式显示

-H根上面的-h参数相同,不过在根式化的时候,采用1000而不是1024进行容量转换

-k以单位显示磁盘的使用情况

-l显示本地的分区的磁盘空间使用率,如果服务器nfs了远程服务器的磁盘,那么在df上加上-l后系统显示的是过滤nsf驱动器后的结果

-i显示inode的使用情况。linux采用了类似指针的方式管理磁盘空间影射。这也是一个比较关键应用

需要注意的是:

  1. 如果使用  -a  这个参数时,系统出现  /proc  这个挂载点,但是里面的东西都是0,不要紧张。/proc  的东西都是  Linux  系统所需要加载的系统数据,而且是挂载在内存当中,所以当然没有占任何的磁盘空间。
  2. 至于那个  /dev/shm  这个目录,其实是利用内存虚拟出来的磁盘空间。由于是通过内存模拟出来的磁盘,因此你在这个目录下面建立任何数据文件时,访问速度是非常快的(在内存中工作)。不过,也由于它是内存模拟出来的,因此这个文件系统的大小在每台主机上都不一样,而且建立的东西在下次启动时就会消失,因为是在内存中嘛。
  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值