查找命令
whereis 查找程序名,除了二进制文件,还查找说明文件,源代码
linux 文件
文件存储在硬盘上,最小的存储单位为扇区,一般为512B,读写时一般读写连续的若干扇区(一般为8个扇区,共4KB),这若干个扇区为一个块 block。
linux 中文件存储之inode节点
linux 中每个文件对应一个inode节点,inode节点存储文件的元数据,比如 文件的字节数、文件的所有者uid、文件的所有组 gid、文件的rwx权限,文件的时间戳,硬链接数,文件数据block的位置。
每个inode节点的大小一般为128字节或256字节。inode节点的总数,在格式化的时候就给定,一般是每1KB或2KB就设置一个inode。
查看每个硬盘分区的inode总数和已经使用的数量,可以使用命令 df -i。 由于每个文件必须有一个inode,因此可能发生inode已经用光,但是硬盘还未存满的情况,此时也无法创建新文件了。
(3) 通过inode信息,找到文件所在的block,读取数据
目录也是一种文件,目录文件中存放的是文件路径和文件inode的对应关系;
一个文件的软链接是一个新的文件,它的inode号和原文件不同,软链接文件中的内容为原文件的路径。读取软链接时,系统自动将访问者导向原文件。增加软链接,文件的inode中的链接数不变,当删除原文件时候,软链接会失效。
ls和du
比如当前文件夹下有三个文本文件 a.h, b.h, c.h 和一个空目录d。当执行 ls -al,显示:
[skc@server tmp]$ ls -lihtotal 12K2328340912 -rw-rw-r-- 2 skc skc 46 Oct 20 01:38 a.h2154514158 -rw-rw-r-- 1 skc skc 500 Oct 20 01:38 b.h2328340912 -rw-rw-r-- 2 skc skc 46 Oct 20 01:38 c.h2328340913 drwxrwxr-x 2 skc skc 6 Oct 20 01:36 d
向d中添加一个文件之后, d的大小扩展为20字节,说明一个文件-inode的对应占用14字节!(因系统而异)
[skc@server tmp]$ ls -lihtotal 12K2328340912 -rw-rw-r-- 2 skc skc 46 Oct 20 01:38 a.h2154514158 -rw-rw-r-- 1 skc skc 500 Oct 20 01:38 b.h2328340912 -rw-rw-r-- 2 skc skc 46 Oct 20 01:38 c.h2328340913 drwxrwxr-x 2 skc skc 20 Oct 20 01:43 d
du -sh 查询当前文件夹下的文件所占的磁盘空间大小。
skc@server tmp]$ du -sh *4.0K a.h4.0K b.h12.0K d
如上所示,a.h 和 b.h 都占据4K大小的磁盘块,因为文件在磁盘中是按照块来读写的。基本的单位为一个磁盘块的大小,所以文件所占据磁盘空间总是4K大小的整数倍。而 c.h 为 a.h的硬链接,所以和a.h共享同一个磁盘块,因此不显示。目录d的占据磁盘空间大小为d下所有文件的磁盘空间大小的总和。