Linux的文件系统结构
顶端的“/”这个称为根目录,逻辑上所有东西都隶属于根目录
但是存储空间可以另外划分
其他的home, tmp ,etc则是在根目录下的分区
所以Linux的文件系统结构为倒树状结构,管理员称为root
在写文件地址时为:/home/alex 表示文件在根目录下的home下的alex
Linux下的可执行文件的格式为:ELF
文件系统:
Rootfs:根文件系统root file system
根据FHS标准,根目录下必须存在的子目录:
/bin :用户命令
/sbin:管理员命令。只能管理员运行
/boot:与系统启动有关的文件,如内核、initrd、以及grub(bootloader)
/dev:设备文件,里面也有许多链接文件,有时一个设备文件会对应多个链接文件,如:
此为光驱的设备文件及链接文件
块设备(block):可随机访问,无所谓先后,数据块,如硬盘,软盘
字符设备(character):线性访问,按字符为单位, 如键盘,鼠标
其中10,63 不再表示文件的大小,设备文件没有大小
10代表主设备号,63代表次设备号
一个字符设备或者块设备都有一个主设备号和次设备号。主设备号和次设备号统称为设
备号。主设备号用来表示一个特定的驱动程序。次设备号用来表示使用该驱动程序的各
设备。例如一个嵌入式系统,有两个LED指示灯,LED灯需要独立的打开或者关闭。那么
,可以写一个LED灯的字符设备驱动程序,可以将其主设备号注册成5号设备,次设备号
分别为1和2。这里,次设备号就分别表示两个LED灯。
/etc :程序配置文件
/home:用户的家目录,默认为每个用户的家目录为 /home/USERNAME
/root:root用户的家目录
/lib:library目录,存放库文件,分为:
静态库(xxxx.a):直接和程序打包在一起,作为程序的一部分存在,当程序载入内存 时,它随之载入内存,程序执行完时释放内存,它也跟着释放内存,这样的程序可以 直接在别的主机上运行
动态库(xxxx.so 即share object):不作为程序的一部分存在,和程序是分开的,是和 其他程序共享的,所以程序是否能在别的主机上运行,还要保证别的主机有该程序依 赖的动态库
内核模块文件(/lib/modules)
/lost+found:系统突然断电时,未保存的文件存放的地方,不过这和系统没有关系,是文件系统自带的
/media:挂载点目录,通常用于挂载移动设备
/mnt:挂载点目录,通常用于挂载临时的文件系统,比如要挂一块临时的硬盘
注意:设备文件不能直接访问的,是要将设备挂载到某个目录下才可访问,如U盘等
/misc(miscellaneous混杂的):用于存放不便于分类的杂项
/opt(optional):可选目录,一般用于安装第三方程序的安装目录(现在基本不是了)
/proc:伪文件系统,内核映射文件,这个目录在系统启动是才会有文件,而当系统关闭时是没有文件
一般存放的都是内核的工作属性,以文件的方式表现出来,但是其实并非是文件,如:网 卡的工作状态,
各个设备的工作状态等都是在这里查看的或者修改的。这是系统调优的重要目录
/sys:同样是伪文件系统,跟硬件设备相关的属性映射文件
/tmp:临时文件存放的位置,每隔一段时间清除,每个用户都对它有执行,查看权限,但是每个用户只能删除自己产生的文件
/var/tmp也是这个属性
/var:可变化的文件(自动变化)
/usr:universal share readonly 全局共享只读目录,记住不是user
/usr/bin:与/bin不同的是,/bin存放的是系统启动时所必须的执行程序,/usr/bin是系统启动 完成时为了提供某个功能所必须的可执行程序
/usr/sbin:与/sbin的区别同上
但是这4个目录都是系统所必须的
/usr/lib:存放的是/usr/bin和/usr/sbin所依赖的库文件
/usr/local:这是一个相对独立的目录,这是第三方软件的安装路径,这个目录不是系统必 需 的,即使没有也可以
/usr/local/bin:第三方软件的可执行程序文件(普通用户)
/usr/ local/sbin:第三方软件的可执行程序文件(超级用户)
/usr/ local/lib:第三方软件以来的库文件