感谢支持
我们一直在努力

Linux认证辅导:关于df du ln

查看系统支持哪些文件系统,可以用 ls -l /lib/modules/$(uname -r)/kernel/fs 来查看。查看已经加载到内存中的文件系统可以用 cat /proc/filesystems 。


df 列出系统整个磁盘的使用量。
-h 以直观形式显示大小,如k,M,G来显示。默认是以k来显示的。
-H 以1000来作为换算,如本来是1G=1024M的,这里1G=1000M。就像我们买的1TB硬盘按生产商的算法来算就是1000G。按电脑的换算就是1000/1024*1000=976GB.
-i 显示Inode数量,而不显示文件系统大小。
-T 显示文件系统类型
-t 指定文件系统类型
-a 列出所有文件系统,包含特殊格式。如/dev/shm等。


[root@www.linuxidc.com ext4]# df -aT
文件系统    类型         1K-块      已用      可用 已用% 挂载点
/dev/mapper/vg_CentOS6-lv_root
              ext4    18102140   1688680  15493908  10% /
proc          proc           0         0         0   –  /proc
sysfs        sysfs           0         0         0   –  /sys
devpts      devpts           0         0         0   –  /dev/pts
tmpfs        tmpfs      515660         0    515660   0% /dev/shm
/dev/sda1     ext4      495844     28694    441550   7% /boot
none   binfmt_misc           0         0         0   –  /proc/sys/fs/binfmt_misc
sunrpc  rpc_pipefs           0         0         0   –  /var/lib/nfs/rpc_pipefs
可以看到/proc,/sys等大小都为0,其实这些挂载目录并不是放在硬盘中的,而是放在内存中,随系统的启动而自动加载到内存中了!所以并不占用硬盘的空间。


如果要查询/home/sun目录的挂载点是什么 可以用df /home/sun来查看。
[root@www.linuxidc.com ext4]# df -TH /home/sun/
文件系统    类型      容量  已用  可用 已用%% 挂载点
/dev/mapper/vg_centos6-lv_root
              ext4      19G   1.8G    16G  10% /


du 列出指定文件或文件夹的大小。
-a 列出所有文件及大小。默认只列出各目录统计大小。而不会一一列出目录下的所有文件及文件的大小。
-h 和df一样。
-s 仅显示要列出的目录总量,而不会将目录下的子目录等再显示出来,这个常用。
-S 仅显示目录所占用量,而不包括目录下面的文件及文件夹大小
-k,-m 以k,m的形式显示文件大小。
仅显示sun整个文件夹大小
[root@www.linuxidc.com home]# du -s sun
28      sun
仅显示sun文件夹本身大小,不包括里面的ss,.gnome2文件夹。并列出子目录大小
[root@www.linuxidc.com home]# du -S sun
4       sun/ss
4       sun/.gnome2
20      sun
[root@www.linuxidc.com home]# du -Ss sun
20      sun
[root@www.linuxidc.com home]# du sun
4       sun/ss
4       sun/.gnome2
28      sun
显示/目录下所有文件夹大小
[root@www.linuxidc.com home]# du -sh /*
7.2M    /bin
18M     /boot
4.0K    /cgroup
200K    /dev
22M     /etc


硬链接ln  硬链接是通过文件系统的inode来建立的连接。我们知道,一个文件的数据与inode号码存在一一对应关系。而目录则是记录着文件名。通过查找目录而找到文件名,即而找到该文件inode对应的数据区块。在同一个挂载的文件系统中,每个文档都有且只有一个inode号。不同数据inode号码并不会重复。但是,我们可以将不同的文件名指向同一个inode。这样,操作不同的文件名时,其实是操作的同一个数据!删除其中一个文件名时,只是删除了该文件名与inode对应的关系,而并没有删除inode与数据区块。硬链接即将不同的文件名对应到同一个inode中。所以,其实硬链接是不占用inode号,也不占用block容量的。更改硬链接的内容,其实就是更改了数据的内容。
在/home/sun/下新建文件test,并且内容为abcd
[root@www.linuxidc.com sun]# echo abcd >test
查看test,发现其链接数量为1
[root@www.linuxidc.com sun]# ll test
-rw-r–r–. 1 root root 5  9月 29 13:53 test
查看/home目录所属的文件系统总inode使用量为61969.
[root@www.linuxidc.com sun]# df -i /home/
文件系统              Inode  已用(I)  可用(I) 已用(I)%% 挂载点
/dev/mapper/vg_centos6-lv_root
                     1150560   61969 1088591    6% /
查看其/home目录使用容量大小532k
[root@www.linuxidc.com sun]# du -s /home
532     /home
将test硬链接至/home/sjb/,并更名为lntest
[root@www.linuxidc.com sun]# ln test /home/sjb/lntest
查看链接过去的文件内容,发现与test一样
[root@www.linuxidc.com sun]# cat /home/sjb/lntest
abcd
对比两个文件的Inode及链接数。发现inode一样,且链接数变为了2.
[root@www.linuxidc.com sun]# ll -i /home/sjb/lntest test
130915 -rw-r–r–. 2 root root 5  9月 29 13:53 /home/sjb/lntest
130915 -rw-r–r–. 2 root root 5  9月 29 13:53 test
再次查看/的inode使用数量,发现还是为61969。所以建立的硬链接并未占用inode量
[root@www.linuxidc.com sun]# df -i /home/
文件系统              Inode  已用(I)  可用(I) 已用(I)%% 挂载点
/dev/mapper/vg_centos6-lv_root
                     1150560   61969 1088591    6% /
再次查看/home使用容量,发现还是532k
[root@www.linuxidc.com sun]# du -s /home
532     /home
删除/home/sun/test文件,再查看/home/sjb/lntest,发现lntest里面的内容仍然还在
[root@www.linuxidc.com sun]# rm -f test ; cat /home/sjb/lntest
abcd

由上可知,建立的新链接并不占用使用量,(只不过文件名那几个字母还是必需占用一点点的)。而紧紧只是一个名称与inode的关联而已。删除其中一个名称,并不影响另一个名称的使用。而编辑任意一个名称里面的内容则会导致两个文件内容都改变。
由于硬链接的这些特性,导致硬链接只能针对文件,不能针对目录,也不能跨分区而链接!


 ln -s 软链接,这个是将一个文件名链接到另一个文件名,然后通过另一个文件名的inode对应关系来读取数据。所以如果删了源文件,链接档随即失效。
[root@www.linuxidc.com sun]# echo cdef >test
[root@www.linuxidc.com sun]# df -i /home; du -s /home
文件系统              Inode  已用(I)  可用(I) 已用(I)%% 挂载点
/dev/mapper/vg_CentOS6-lv_root
                     1150560   61969 1088591    6% /
532     /home
[root@www.linuxidc.com sun]# ln -s /home/sun/test /home/sjb/lnstest
[root@www.linuxidc.com sun]# df -i /home; du -s /home
文件系统              Inode  已用(I)  可用(I) 已用(I)%% 挂载点
/dev/mapper/vg_centos6-lv_root
                     1150560   61970 1088590    6% /
532     /home
[root@www.linuxidc.com sun]# cat /home/sjb/lnstest
cdef
[root@www.linuxidc.com sun]# rm -f test ; cat /home/sjb/lnstest
cat: /home/sjb/lnstest: 没有那个文件或目录
[root@www.linuxidc.com sun]# ll /home/sjb/
总用量 0
lrwxrwxrwx. 1 root root 14  9月 29 14:22 lnstest -> /home/sun/test


可以看到,软链接中的数据也是不占用空间的,仅仅只是文件名的几个字符占用一丁点空间而已,但是会占用一个inode。而且在删除了源文件后,链接即无法读取。注意:建立软链接链接源文件一定要用绝对路径,如果只用相对路径的话链接的目标文件是无法读取的!

赞(0) 打赏
转载请注明出处:服务器评测 » Linux认证辅导:关于df du ln
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏