df\du

作者: c80bc26f12ed | 来源:发表于2017-09-26 16:20 被阅读71次

du:disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和

df,disk free,通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件, df记录的是通过文件系统获取到的文件的大小,他比du强的地方就是能够看到已经删除的文件,而且计算大小的时候,把这一部分的空间也加上了,更精确了。当文件系统也确定删除了该文件后,这时候du与df就一致了
df检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息

df [-ahikHTm] [目录或文件名]

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

例一:将系统内所有的 filesystem 列出来,显示磁盘使用情况

df

Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/centos-root 10475520 3409408 7066112 33% /
devtmpfs 627700 0 627700 0% /dev
tmpfs 637568 80 637488 1% /dev/shm
tmpfs 637568 24684 612884 4% /run
tmpfs 637568 0 637568 0% /sys/fs/cgroup
/dev/mapper/centos-home 5232640 67720 5164920 2% /home
/dev/vda2 1038336 133704 904632 13% /boot

在 Linux 底下如果 df 没有加任何选项,那么默认会将系统内所有的

(不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来!

至于那个 /dev/shm 是与内存有关的挂载,先不要理他!

先来说明一下范例一所输出的结果讯息为:
● Filesystem:代表该文件系统是在哪个 partition ,所以列出装置名称;
● 1k-blocks:说明底下的数字单位是 1KB 呦!可利用 -h 或 -m 来改变容量;
● Used:顾名思义,就是使用掉的磁盘空间啦!
● Available:也就是剩下的磁盘空间大小;
● Use%:就是磁盘的使用率啦!如果使用率高达90%以上时,最好需要注意一下了,免得容量不足造成系统问题喔!(例如最容易被灌爆的 /var/spool/mail 这个放置邮件的磁盘)
● Mounted on:就是磁盘挂载的目录所在啦!(挂载点啦!)

第3,4列分别表示已用的和可用的数据块数目。用户也许会感到奇怪的是,第3,4列块数之和不等于第2列中的块数。这是因为缺省的每个分区都留了少量空间供系统管理员使用。即使遇到普通用户空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间。清单中Use% 列表示普通用户空间使用的百分比,即使这一数字达到100%,分区仍然留有系统管理员使用的空间。最后,Mounted on列表示文件系统的挂载点。

例二:将容量结果以易读的容量格式显示出来

df -h

Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 10G 3.3G 6.8G 33% /
devtmpfs 613M 0 613M 0% /dev
tmpfs 623M 80K 623M 1% /dev/shm
tmpfs 623M 25M 599M 4% /run
tmpfs 623M 0 623M 0% /sys/fs/cgroup
/dev/mapper/centos-home 5.0G 67M 5.0G 2% /home
/dev/vda2 1014M 131M 884M 13% /boot

不同于范例一,这里会以 G/M 等容量格式显示出来,比较容易看啦!

例三:将系统内的所有特殊文件格式及名称都列出来
[root@study ~]# df -aT
Filesystem Type 1K-blocks Used Available Use% Mounted on
rootfs rootfs 10475520 3409368 7066152 33% /
proc proc 0 0 0 - /proc
sysfs sysfs 0 0 0 - /sys
devtmpfs devtmpfs 627700 0 627700 0% /dev
securityfs securityfs 0 0 0 - /sys/kernel/security
tmpfs tmpfs 637568 80 637488 1% /dev/shm
devpts devpts 0 0 0 - /dev/pts
tmpfs tmpfs 637568 24684 612884 4% /run
tmpfs tmpfs 637568 0 637568 0% /sys/fs/cgroup
.....(中间省略).....
/dev/mapper/centos-root xfs 10475520 3409368 7066152 33% /
selinuxfs selinuxfs 0 0 0 - /sys/fs/selinux
.....(中间省略).....
/dev/mapper/centos-home xfs 5232640 67720 5164920 2% /home
/dev/vda2 xfs 1038336 133704 904632 13% /boot
binfmt_misc binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc

系统里面其实还有很多特殊的文件系统存在的。那些比较特殊的文件系统几乎

都是在内存当中,例如 /proc 这个挂载点。因此,这些特殊的文件系统

都不会占据磁盘空间喔! _

例四:将 /etc 底下的可用的磁盘容量以易读的容量格式显示
[root@study ~]# df -h /etc
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 10G 3.3G 6.8G 33% /

这个范例比较有趣一点啦,在 df 后面加上目录或者是档案时, df

会自动的分析该目录或档案所在的 partition ,并将该 partition 的容量显示出来,

所以,您就可以知道某个目录底下还有多少容量可以使用了! _

例五:将目前各个 partition 当中可用的 inode 数量列出
[root@study ~]# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/centos-root 10M 108K 9.9M 2% /
devtmpfs 154K 397 153K 1% /dev
tmpfs 156K 5 156K 1% /dev/shm
tmpfs 156K 497 156K 1% /run
tmpfs 156K 13 156K 1% /sys/fs/cgroup

这个范例则主要列出可用的 inode 剩余量与总容量。分析一下与范例一的关系,

你可以清楚的发现到,通常 inode 的数量剩余都比 block 还要多呢

由于 df 主要读取的数据几乎都是针对一整个文件系统,因此读取的范围主要是在 Superblock 内的信息, 所以这个指令显示结果的速度非常的快速!在显示的结果中你需要特别留意的是那个根目录的剩余容量! 因为我们所有的数据都是由根目录衍生出来的,因此当根目录的剩余容量剩下 0 时,那你的 Linux 可能就问题很大了。
另外需要注意的是,如果使用 -a 这个参数时,系统会出现 /proc 这个挂载点,但是里面的东西都是 0 ,不要紧张! /proc 的东西都是 Linux 系统所需要加载的系统数据,而且是挂载在『内存当中』的, 所以当然没有占任何的磁盘空间啰!
至于那个 /dev/shm/ 目录,其实是利用内存虚拟出来的磁盘空间,通常是总物理内存的一半! 由于是透过内存仿真出来的磁盘,因此你在这个目录底下建立任何数据文件时,访问速度是非常快速的!(在内存内工作) 不过,也由于他是内存仿真出来的,因此这个文件系统的大小在每部主机上都不一样,而且建立的东西在下次开机时就消失了! 因为是在内存中嘛!

实例3:显示指定类型磁盘
命令:
df -t ext3
输出:
[root@CT1190 log]#df -t ext3
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda7 19840892 890896 17925856 5% /
/dev/sda9 203727156 93089700 100121712 49% /opt
/dev/sda8 4956284 570104 4130348 13% /var
/dev/sda6 19840892 1977568 16839184 11% /usr
/dev/sda3 988116 23880 913232 3% /boot

-h更具目前磁盘空间和使用情况 以更易读的方式显示
-H根上面的-h参数相同,不过在根式化的时候,采用1000而不是1024进行容量转换
-k以单位显示磁盘的使用情况
-l显示本地的分区的磁盘空间使用率,如果服务器nfs了远程服务器的磁盘,那么在df上加上-l后系统显示的是过滤nsf驱动器后的结果
-i显示inode的使用情况。linux采用了类似指针的方式管理磁盘空间影射.这也是一个比较关键应用

du:显示每个文件和目录的磁盘使用空间(大小)

du [-ahskm] 档案或目录名称

选项与参数:
-a :列出所有的档案与目录容量,因为默认仅统计目录底下的档案量而已。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;

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

范例一:列出目前目录下的所有档案容量
[root@study ~]# du
4 ./.cache/dconf <==每个目录都会列出来
4 ./.cache/abrt
8 ./.cache
....(中间省略)....
0 ./test4
4 ./.ssh <==包括隐藏文件的目录
76 . <==这个目录(.)所占用的总量

直接输入 du 没有加任何选项时,则 du 会分析『目前所在目录』

的档案与目录所占用的磁盘空间。但是,实际显示时,仅会显示目录容量(不含档案),

因此 . 目录有很多档案没有被列出来,所以全部的目录相加不会等于 . 的容量喔!

此外,输出的数值数据为 1K 大小的容量单位。

范例二:同范例一,但是将档案的容量也列出来
[root@study ~]# du -a
4 ./.bash_logout <==有档案的列表了
4 ./.bash_profile
4 ./.bashrc
....(中间省略)....
4 ./.ssh/known_hosts
4 ./.ssh
76 .

范例三:检查根目录底下每个目录所占用的容量
[root@study ~]# du -sm /*
0 /bin
99 /boot
....(中间省略)....
du: cannot access ‘/proc/17772/task/17772/fd/4’: No such file or directory
du: cannot access ‘/proc/17772/fdinfo/4’: No such file or directory
0 /proc <==不会占用硬盘空间!
1 /root
25 /run
....(中间省略)....
3126 /usr <==系统初期最大就是他了啦!
117 /var

这是个很常被使用的功能~利用通配符 * 来代表每个目录,如果想要检查某个目录下,

哪个次目录占用最大的容量,可以用这个方法找出来。值得注意的是,如果刚刚安装好 Linux 时,

那么整个系统容量最大的应该是 /usr 。而 /proc 虽然有列出容量,但是那个容量是在内存中,

不占磁盘空间。至于 /proc 里头会列出一堆『No such file or directory』 的错误,

别担心!因为是内存内的程序,程序执行结束就会消失,因此会有些目录找不到,是正确的!

实例2:显示指定文件所占空间
[root@localhost test]#du log2012.log
300 log2012.log
实例4:显示多个文件所占空间
[root@localhost test]#du log30.tar.gz log31.tar.gz
4 log30.tar.gz
4 log31.tar.gz
实例5:只显示总和的大小
[root@localhost test]#du -s
1288 .
[root@localhost soft]#du -s test
1288 test
实例6:方便阅读的格式显示
实例7:文件和目录都显示

du -ah test

实例8:显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和
du -c log30.tar.gz log31.tar.gz
4 log30.tar.gz
4 log31.tar.gz
8 总计
说明:加上-c选项后,du不仅显示两个目录各自占用磁盘空间的大小,还在最后一行统计它们的总和。
实例9:按照空间大小排序
du|sort -nr|more
实例10:输出当前目录下各个子目录所使用的空间
du -h --max-depth=1

与 df 不一样的是,du 这个指令其实会直接到文件系统内去搜寻所有的档案数据, 所以上述第三个范例指令的运作会执行一小段时间!此外,在默认的情况下,容量的输出是以 KB 来设计的, 如果你想要知道目录占了多少 MB ,那么就使用 -m 这个参数即可啰!而, 如果你只想要知道该目录占了多少容量的话,使用 -s 就可以啦!
至于 -S 这个选项部分,由于 du 默认会将所有档案的大小均列出,因此假设你在 /etc 底下使用 du 时, 所有的档案大小,包括 /etc 底下的次目录容量也会被计算一次。然后最终的容量 (/etc) 也会加总一次, 因此很多朋友都会误会 du 分析的结果不太对劲。所以啰,如果想要列出某目录下的全部数据, 或许也可以加上 -S 的选项,减少次目录的加总

相关文章

  • df\du

    du:disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被...

  • df/du

    显示文件系统磁盘空间使用情况-h以人类可读的方式显示 KB MB GB du显示指定的目录及子目录已使用的磁盘空...

  • df and du

    df (show all disk usage) df -T: show typesdf -h: human r...

  • du/df

    linux磁盘管理 df 用户展示磁盘使用 -a 现实所有文件系统的文件-B 指定打印单位, -BM--total...

  • du&df

    du -h (disk usage -human) 查看当前目录下所有文件的大小(递归查询) -h 的意思是hu...

  • df、du详解

    df:列出文件系统的整体磁盘使用量。可以利用该命令来获取硬盘被占用了多少空间,目前还剩多少空间等信息,它也可以显示...

  • df和du

    查看当前服务器磁盘空间(df和du) df,du区别: df 是从文件系统获取空间大小,当删除了某文件,可能还未被...

  • Linux学习8

    df -h /etc df -aT du -h:执行一小段时间 大小的输出以KB来设计的 du -S 没有单位 列...

  • 服务器管理

    性能查看 top df (disk free) du (disk usage) du -h --max-dep...

  • 47 df 和 du

    df 用来显示当前的系统磁盘情况。 du 命令显示大小 查看分区挂载

网友评论

      本文标题:df\du

      本文链接:https://www.haomeiwen.com/subject/lwosextx.html