1.Linux文件系统及目录结构
Linux中文件是一个任意长度的字节序列,Linux中文件可以包含任意信息,如ASCLL码,二进制文件和其它类型的文件都是不会加以区分的。为方便起见,文件可以被组织分配在一个目录中,目录存储成文件的形式在很大程度上可作为文件处理。文件可以有子目录,形成有层次的文件系统,Linux系统下的根目录是/,包含很多子目录。
输入命令
[root@localhost ~]# ls /
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
目录解释:
/根目录:
/bin:Binary,该目录存放常用命令;
/sbin:Super User,存放着系统管理员使用的系统管理程序;
/boot:存放Linux启动时的核心文件,连接文件及镜像文件等;
/dev:Device,该目录下存放的是Linux外部设备,Linux中访问设备和访问文件方式相同;
/etc:存放所有系统管理所需的配置文件和子目录;
/lib:存放系统最基本的动态连接共享库,作用类似于Windows的DLL文件;
/lost+found:一般是空,系统非法关机后,这里存放了一些文件;
/media:Linux系统会识别一些设备,U盘、光驱等,识别后挂载到这个目录下;
/mnt:用户临时挂载别的文件系统;
/opt:给主机额外安装软件摆放的目录;
/proc:虚拟目录,系统内存的映射;
/root:系统管理员,也称超级用户主目录;
/srv:存放一些服务启动后需要提取的数据;
/sys:安装了2.6内核中新文件系统sysfs;
/tmp:存放一些临时文件;
/usr:用户很多应用程序和文件都放在该目录下;
/usr/bin:系统用户使用的应用程序;
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序;
/var:存放着在不断扩充的东西,将被修改目录放在其下,包括各种日志文件
2.inode,block,superblock
inode是Linux/Unix文件系统的基础。
扇区(Sector)是硬盘最小存储单位,操作系统读取硬盘中的文件是以块(block)读取,块也是文件最小存储单位,常见块大小为4kB,约为8个扇区,每个扇区存储为512字节。
一个文件可能会占多个块,但一个块只能存放一个文件。文件实际存储在data block区块中,而硬盘还有一个超级区块(superblock),超级区块会记录整个文件系统整体信息,如inode和block的总量、使用量、剩余量等。
inode是来存储文件的元信息(metadata),译为索引节点(i+node)。每个文件都有一个inode。
使用stat命令来查看文件inode信息,Linux操作系统不使用文件名来区分文件,而是使用inode区分。
3.硬链接、软链接
3.1硬链接
Unix/Linux允许多个文件名指向同一个inode号,意味着不同文件名可以访问同一内容;对文件内容进行修改,会影响所有文件名,但是删除一个文件名,不影响另一个文件访问,这就是硬链链接
3.2软链接
文件A和Binode号虽然不一样,但文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终都会读取文件B。这时文件A就称为文件B的“软链接”或“符号链接”。文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:“No such file or directory”
用实际案例来体会下:
建立硬链接:ln 源文件 目标文件
建立软链接:ln -s 源文件 目标文件
[root@localhost second]# cat booz #查看booz文件内容
zhangsan
[root@localhost second]# ln booz booz3 #建立硬链接
[root@localhost second]# cat booz3 #查看链接后的文件
zhangsan
[root@localhost second]# rm -f booz #删除源文件
[root@localhost second]# cat booz3 #查看链接文件依然能看到源文件内容
zhangsan
[root@localhost second]# touch boozz
[root@localhost second]# echo lisi > boozz
[root@localhost second]# cat boozz
lisi
[root@localhost second]# ln -s boozz boozz1 #建立软链接
[root@localhost second]# cat boozz1 #查看软链接后的文件
lisi
[root@localhost second]# rm -f boozz #删除源文件
[root@localhost second]# cat boozz1 #查看不能再看到文件内容
cat: boozz1: 没有那个文件或目录
4.文件删除原理
硬链接:一个文件可以有多个有效的路径名,是文件的另一个入口,当一个文件有多个硬链接时,只有将所有的硬链接文件和源文件删除,才会彻底删除源文件。
软链接:软链接文件存放者源文件的路径。源文件删除时,软链接文件依然存在,但不能再访问源文件。
Linux时通过控制link数量来删除文件的。只有当一个文件不存在任何link时,文件才会被删除,一般来说,每个文件都有2个link计数器:i_count和i_nlink。
i_count:当前文件被调用次数(内存计数器)。
i_nlink:当前文件硬链接的数量(磁盘引用计数器)。
rm命令原理:通过删除命令删除文件,实际上就是减少文件的磁盘引用计数i_nlink的数量(及硬件数量)。