总结的非常详细 深入理解linux系统的目录结构

对于每一个linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面我们就开始了解一下linux目录结构的相关知识
 
当在使用Linux的时候,如果您通过ls –l / 就会发现,在/下包涵很多的目录,比如etc、usr、var、bin ... ... 等目录,而在这些目录中,我们进去看看,发现也有很多的目录或文件 。文件系统在Linux下看上去就象树形结构,所以我们可以把文件系统的结构形象的称为 树形结构 。
文件系统的是用来组织和排列文件存取的,所以她是可见的,在Linux中,我们可以通过ls等工具来查看其结构,在Linux系统中,我们见到的都是树形结构;比如操作系统安装在一个文件系统中,他表现为由/ 起始的树形结构 。linux文件系统的最顶端是/,我们称/为Linux的root,也就是 Linux操作系统的文件系统 。Linux的文件系统的入口就是/,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者 。
由于linux是开放源代码,各大公司和团体根据linux的核心代码做各自的操作,编程 。这样就造成在根下的目录的不同 。这样就造成个人不能使用他人的linux系统的PC 。因为你根本不知道一些基本的配置,文件在哪里 。。。这就造成了混乱 。这就是FHS(Filesystem Hierarchy Standard )机构诞生的原因 。该机构是linux爱好者自发的组成的一个团体,主要是是对linux做一些基本的要求,不至于是操作者换一台主机就成了linux的‘文盲’ 。
根据FHS(http://www.pathname.com/fhs/)的官方文件指出, 他们的主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下, 所以他们希望独立的软件开发商、操作系统制作者、以及想要维护系统的用户,都能够遵循FHS的标准 。也就是说,FHS的重点在于规范每个特定的目录下应该要放置什么样子的数据而已 。这样做好处非常多,因为Linux操作系统就能够在既有的面貌下(目录架构不变)发展出开发者想要的独特风格 。
事实上,FHS是根据过去的经验一直再持续的改版的,FHS依据文件系统使用的频繁与否与是否允许使用者随意更动, 而将目录定义成为四种交互作用的形态,用表格来说有点像底下这样:
 

总结的非常详细 深入理解linux系统的目录结构

文章插图
 
 
四中类型:
1. 可分享的:
可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;
2. 不可分享的:
自己机器上面运作的装置文件或者是与程序有关的socket文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了 。
3. 不变的:
有些数据是不会经常变动的,跟随着distribution而不变动 。例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;
4. 可变动的:
经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等 。
事实上,FHS针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:
/ (root, 根目录):与开机系统有关;
/usr (unix software resource):与软件安装/执行有关;
/var (variable):与系统运作过程有关 。
一. 根目录 (/) 的意义与内容:
根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的, 同时根目录也与开机/还原/系统修复等动作有关 。由于系统开机时需要特定的开机软件、核心文件、开机所需程序、 函式库等等文件数据,若系统出现错误时,根目录也必须要包含有能够修复文件系统的程序才行 。因为根目录是这么的重要,所以在FHS的要求方面,他希望根目录不要放在非常大的分区, 因为越大的分区内你会放入越多的数据,如此一来根目录所在分区就可能会有较多发生错误的机会 。
因此FHS标准建议:根目录(/)所在分区应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好 。如此不但效能较佳,根目录所在的文件系统也较不容易发生问题 。说白了,就是根目录和windows的C盘一个样 。
根据以上原因,FHS认为根目录(/)下应该包含如下子目录:
目录
应放置档案内容
/bin
系统有很多放置执行档的目录,但/bin比较特殊 。因为/bin放置的是在单人维护模式下还能够被操作的指令 。在/bin底下的指令可以被root与一般帐号所使用,主要有:cat,chmod(修改权限), chown, date, mv, mkdir, cp, bash等等常用的指令 。


推荐阅读