2020-05-01 linux根文件系统详解
文件系统:
rootfs:根文件系统
根据FHS,/下一级子目录是规定的,包括:
/boot:系统启动相关的文件,如内核、initrd,以及grub(bootloader)
/dev:设备文件:块设备:随机访问,以数据块为单位,一般指存储设备
字符设备:线性访问,按字符为单位逐个读取(如显示器,鼠标)
特殊文件(黑底黄字):没有大小,只有元数据,没有数据,作为设备的访问入口存在
设备号:主设备号(major)和次设备号(minor)
一个设备只有有设备文件才能被linux访问,设备文件不能打开也不能cd进去(并不是目录或文件,只是设备上数据的访问入口)
/etc:配置文件(系统上大多数程序/服务程序的配置文件都在这里,绝大多数是纯文本文件(一切皆文本))大多数情况下我们对整个系统的操作都是编辑配置文件来完成的
/home:用户的家目录,每一个用户的家目录通常默认为/home/USERNAME(root用户除外,root用户的家目录就在/root)(用户的家目录只有用户有权限,其他用户没有任何权限,包括同名的属组也无权限(可能是万一有别的用户也属于该组??))
/root:管理员的家目录
/lib:库文件:静态库 , .a(直接链接到程序的地址空间中去,作为程序的一部分运行。便于程序单个文件管理,即直接复制程序即可在另一台主机上直接运行)
动态库, .dll(windows),.so(shared object,可以被多个程序共享,因此在内存中只需存储一份即可,大大节约内存空间。但使用动态库的程序,复制程序后必须保证另一台主机上也有该.so程序才可以运行)
任何程序和数据都必须要载入内存后才能被程序所使用
库文件不能单独执行,因为没有程序的访问入口,只能被调用
/lib/modules:内核模块文件
/media:挂载点目录(如外置设备要想在linux中访问如光盘,需要将该设备关联到当前整个文件系统树上的某一个节点上才能访问,这个过程叫挂载,设备内容不是通过设备文件进入的(参考上方设备文件注释)),通常用于挂载移动设备
/mnt:挂载点目录,通常(FHS规定)用来挂在额外的临时文件系统(只要跟当前根没关系的都要挂载)
/opt:可选目录,第三方程序的安装目录
/proc:伪文件系统(本身没有内容,系统运行起来之后才有内容),内核映射文件(本身不是文件,反映了内核的一些统计数据和属性,与系统性能数据监控有关)
/sys:伪文件系统(同上),跟硬件设备相关的属性映射文件(和内核也有关,只是独立出来作为独立的伪文件系统来使用,通常用于实现硬件设备管理,尤其是硬盘这类存储设备)
/tmp & /var/tmp:临时文件(该目录下的文件如果一个月内未被访问会被系统自动清除,任何人都能在这里创建文件,但是只能删除自己的文件不能删除别人的文件)
/var:可变化的文件
/bin:binary(二进制)可执行文件,存放用户命令
/sbin:存放管理命令
这些程序运行的时候可能会依赖于/lib下的库,每一个程序都有可能用到/etc下的配置文件
/usr:universal, shared, read-only 存放只读文件 或 Unix Software Resource,unix软件资源
/usr/bin
/usr/sbin 与独立目录的区别是 独立目录与系统启动相关,子目录是为系统提供正常基本功能相关
/usr/lib /usr下的/bin和/sbin所需的库/lib下没有的就存放在/usr/lib下
/usr/local: 第三方软件的安装路径,与系统运行无关,提供外围其他功能(非必需,以上为必需)
/usr/local/bin
/usr/local/sbin
/usr/local/lib