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@ 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@ 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@ home]# du -s sun
28      sun
仅显示sun文件夹本身大小,不包括里面的ss,.gnome2文件夹。并列出子目录大小
[root@ home]# du -S sun
4       sun/ss
4       sun/.gnome2
20      sun
[root@ home]# du -Ss sun
20      sun
[root@ home]# du sun
4       sun/ss
4       sun/.gnome2
28      sun
显示/目录下所有文件夹大小
[root@ 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@ sun]# echo abcd >test
查看test,发现其链接数量为1
[root@ sun]# ll test
-rw-r--r--. 1 root root 5  9月 29 13:53 test
查看/home目录所属的文件系统总inode使用量为61969.
[root@ sun]# df -i /home/
文件系统              Inode  已用(I)  可用(I) 已用(I)%% 挂载点
/dev/mapper/vg_centos6-lv_root
                     1150560   61969 1088591    6% /
查看其/home目录使用容量大小532k
[root@ sun]# du -s /home
532     /home
将test硬链接至/home/sjb/,并更名为lntest
[root@ sun]# ln test /home/sjb/lntest
查看链接过去的文件内容,发现与test一样
[root@ sun]# cat /home/sjb/lntest
abcd
对比两个文件的Inode及链接数。发现inode一样,且链接数变为了2.
[root@ 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@ sun]# df -i /home/
文件系统              Inode  已用(I)  可用(I) 已用(I)%% 挂载点
/dev/mapper/vg_centos6-lv_root
                     1150560   61969 1088591    6% /
再次查看/home使用容量,发现还是532k
[root@ sun]# du -s /home
532     /home
删除/home/sun/test文件,再查看/home/sjb/lntest,发现lntest里面的内容仍然还在
[root@ sun]# rm -f test ; cat /home/sjb/lntest
abcd

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/23182.html