Linux文件系统标准

2016-04-26 15:48:25 1896

简单地介绍Linux的文件目录结构:

/

这是整个文件系统的根目录,所有的目录都是由此衍生而来。此外,根目录与开机、撤消、修复有关。也因此,FHS推荐,根目录所在的分区,越小越好;还有不应该在根目录下自行新增目录与文件,以减少错误的发生机率,也可以提高性能。
根目录是开机最早挂载进来的,所以有些必要的工具,「不可以」放到其它的分区当中,包括了/etc,/bin, /dev, /lib, /sbin。

/boot:
开机引导的相关文件,包含了开机核心与开机选单及配置文件,是整个系统核心开始进入用户模式前所需要的文件。
这个目录下的文件因为早于根目录挂载前被读入,所以许多人喜欢把/boot额外放置在一个独立分区。虽然在正常的开机过程当中,/boot并非必须在独立分区当中,但是在根目录有异常时,独立的/boot分区,至少可以让initramsfs引导,让管理者可以手动挂载根目录来处理异常状况。

接下来这五个目录必须跟根目录在同一个分区:
/bin:
必要的系统指令,包括了管理者与一般用户的指令。特别是进入singleuser mode时,可能也是你仅能动用的指令。所以这些指令,你应该要有基本了解。
/sbin:
必要的系统指令,而且多仅限于root使用的程序,所以这些指令通常与开机与修复撤消有关。
/lib:
必要的共享函式库与核心模块。何为「必要??就是开机、/bin、及/sbin会调用使用的。其中/lib/modules这个目录,就是核心相关驱动放置的地方。
/dev:
Linux下的所有设备,都是以文件模式来呈现的。所以这目录下文件代表了你硬件的设备。当你访问这里的某个文件时,就相当于访问某个设备。如硬盘就是/dev/sd*,随机数产生器就是/dev/urandom,光盘机就是/dev/sr*等。
/etc:
几乎系统主要的配置文?都在这里。假如你对系统调校很有兴趣,那你大概会花绝大多数的时间在这个目录下。这个目录也是我个人在备份系统时,唯一一定会整个复制下来的目录。

以下是挂载媒体的目录:
/media:
可移除媒体的挂载点。一般USB外接的硬盘、cdrom、软盘都是挂载到这里了。
/mnt:
暂时挂载文件系统的挂载。一般未包含在整个文件系统必要目录的分区,都是挂载在这个目录下。
这两个目录,其实有著混淆?关系。以前早期,cdrom,floppy都是挂载在/mnt下的,但USB外接设备的兴起,让不同的Linux发行版,有著不同的策略。如Ubuntu就把所有未特定指名挂载处的设备,都当成「可移除媒体」,全部都挂在/media下。

/opt:
额外的软件安装处。
/srv:
服务的数据目录。
以上两个目录,在ubuntu中仍存在,但几乎不再用到。
在以前,网页服务器的网页存储在/srv/www下,但现在都搬到/var/www下了;一些第三方软件,以前都放在/opt下,现在也多放到/usr下去了。仅剩下少数的软件,会使用/opt放置软件。

/tmp:
让程序或者用户暂时放置文件的地方,所以这个目录也是任何人都可以访问的。
在FHS的推荐当中,这个目录下的数据,应该在开机时都予以删除。因此,不要在里面放置必须保存的文件,甚至可以把这个目录挂在到内存当中,让他在关机时,一并清除,还可以加快程序执行。

/home:
用户的家目录所在的目录。以帐号为目录名,位在这个目录之下。
/root:
root的家目录。既然是最高权限的管理者,当然需要一些特权,来放置系统管理所必须的文件。所以独立一个目录给他使用。
虽然我列出这两个目录,但其实这两个目录「并非」根目录系统所必须要有的目录。大家或许很讶异,但其实想一下就知道了:这两个目录不存在,并不影响用户或管理者的登录注销,更不会影响整个系统的运行。顶多让用户与管理者不能存储自用的文件而已。
在一些服务器,虽然有这两个目录,但用户与管理者根本不会用到这些空间。在桌面系统,大家会把最大的空间留给/home,但服务器几乎完全是相反的,甚至只留个几mb让你放一些基本的分配文件,如.bashrc等等,强制避免宝贵的硬盘空间被浪费掉。

/usr:

先说明一下,usr「不是」user的缩写,而是unixsoftwareresource的缩写。所以顾名思义,这个目录是放置软件用的。软件的开发者,不应该自行在这个目录下新增目录,而是应该合理的把文件放置到/usr下的各目录当中。除了基本系统所需的文件之外,绝大多数的软件都放置在/usr下,所以你会看到/usr下的目录,有点类似根目录的结构。如果扣除掉个人的文件,你会发现这个目录是整个系统占据容量最大的目录。

以下这几个都是/usr下重要的目录:
/usr/bin:
绝大数用户所使用的指令,都放在这个目录下。若以ls-l 观察,你会发现这些文件几乎都是755权限,意即最终用户可以读入或使用但不能更改的。
/usr/sbin:
系统指令但非基本系统所需的,如一些daemon类的指令。
/usr/lib:
应用软件所需的函式库。当然这里所指的应用软件,指的是/usr/bin与/usr/sbin下的软件。
/usr/share:
放置共享文件的地方,如我们常查询指令参数用的man,或者应用程序的说明,就是指向这个目录的文件。
/usr/include:
假如你会自行编译安装软件,所需要的header或include,就是位在此处。
/usr/src:
软件的原始码放置处。
/usr/local:
这个要特别说明一下,你把他打开,会发现这个目录下的结构,有点像根目录,或许可以说非常像/usr的目录结构。没错,这个目录也是放置应用软件的地方。所以也有bin,lib等等。
那有什么不同呢?一般发行版所包含的软件,一般都是创建在/usr下,但是管理者自行从其它Linux发行版安装的软件,就必须放置在这个目录下,以示区别。利用这个特性,你可以把两个不同版本的同一软件,安装在同一台机器上。

/var:
对于常变动的数据文件,会放置在这里。这样说明,似乎很难理解何为「常变动」的文件。
看看他包含哪些目录,作什么用途,你应该就可以理解:
/var/cache:
快取缓冲文件放置处,如/var/cache/apt/archives中,有你sudoapt-get upgrade与sudoapt-get install所下载的.deb。
/var/mail:
邮件服务存放邮件处。
/var/www:
网页服务存放网页处。
/var/log:
系统运作的log档,几乎都放在此处。
/var/spool:
队列文件放置处。如/var/spool/cron放置了工作排?数据。
/var/lib:
软件执行过程中,放置数据文件的地方。如/var/lib/mysql放置了MySQL数据库。

还有两个非FHS所规范,但是也是相当重要的目录:
/proc:
这个目录下的所有数据都是在内存当中。主要是一些系统进程数据。所以只是徒有目录或文件的模式,但是完全不占用磁盘空间。
/sys:
这个目录的所有数据,也是都在内存当中,包括了核心、模块、硬件设备信息等。当然也是完全不占用磁盘空间。




提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: