Linux目录结构 / 目录配置标准FHS(Filesystem Hierarchy Standard)(鸟哥的Linux私房菜基础学习篇第三版-第六章)
2017年12月03日
⁄ 综合
⁄ 共 3408字 ⁄ 字号
小 中 大
- FHS定义的四种目录作用交互形态:
- 不可分享的
- 自己机器上面运作的设备文件或者与程序有关的socket文件等,由于仅与自身机器有关,所以当然就不适合分享给其它主机了
- 可变动的
- 经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等
- 不可变动的
- 有些数据是不会经常变动的,跟随着 distribution 而不变动。 例如函数库、文件说明文件、系统管理员所管理的主机服务配置文件等等
- FHS定义的3个目录:
- / (root,根目录):与开机系统有关,其子目录内容及意义:(1.根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的, 同时根目录也与开机/还原/系统修复等动作有关;2.由于系统开机时需要特定的开机软件、内核文件、开机所需程序、函数库等文件数据,若系统出现错误时,根目录也必须要包含有能够修复文件系统的程序才行。3.因为根目录是如此的重要,所以FHS标准建议:根目录所在分区越小越好,且应用程序所安装的软件最好不要与根目录放在统一个分区内,如此不但性能较好,根目录所在文件系统也较不容易发生问题;)
- /dev
- 放置的设备文件,访问这个目录下的某个文件就等于访问某个设备
- /home
- 这是系统默认的用户主文件夹
- 主文件夹有两种代号:
- ~ 代表当前这个用户的主文件夹
- ~boatman 代表boatman这个用户的主文件夹
- /lib
- 系统的函数非常多,而/lib放置的则是在系统开机时会用到的函数库,以及在/bin或/sbin下面的命令会调用的函数库
- 尤其关注/lib/modules这个目录,其下面会放置内核相关的模块(驱动程序)
- /media
- 放置的是可删除设备对应的文件;包括:光盘、DVD等设备都暂时挂载于此
- /mnt
- 如果你想要暂时挂载某些额外的装置,一般建议你可以放置到这个目录中;在比较早的时候,这个目录的用途与/media相同啦!只是有了/media之后,这个目录就用来暂时挂载用了
- /opt
- 第三方软件安装目录(不过,以前的 Linux 系统中,我们还是习惯放置在/usr/local 目录下呢)
- /root
- 系统超级管理员(root)的主文件夹(之所以放在这里,是因为如果进入单用户维护模式而仅挂载根目录时,根目录就能够拥有 root 的主文件夹,所以我们会希望root的主文件夹与根目录放置在同一个分区中)
- /sbin
- 放置的是开机过程中所需要的命令,里面包括了开机、修复、还原系统所需要的命令
- 至于某些服务器软件程序,一般则放置到/usr/sbin/当中
- 至于本机自行安装的软件所产生的系统执行文件(system binary), 则放置到/usr/local/sbin/当中
- /srv
- srv 可以视为“service”的缩写,是一些网络朋务启动之后,这些朋务所需要取用的数据目录(例如WWW服务需要的网页数据就可以放置在/srv/www/里面)
- /usr (UNIX software resource):与软件安装/执行有关,其子目录内容及意义:(1.依据 FHS 的基本定,/usr 里面放置的数据属于可分享的不可变动的(shareable, static), 如果你知道如何通过网络进行分区的挂载(NFS 朋务器),那么/usr 确实可以分享给局域网络内的其它主机来使用;2.FHS 建议所有软件开发者,应该将他们的数据合理的分别放置到这个目录下的子目录,而不要自行新建该软件自己的独立的目录;)
- /usr/X11R6/
- 为 X Window System 重要数据所放置的目录
- /usr/bin/
- 绝大部分的用户可使用指令都放在这里
- 请注意到它与/bin 的不同之处。(是否与开机过程有关)
- /usr/include/
- c/c++等程序语言的档头(header)与包含档(include)放置处
- 当我们以 tarball 方式 (*.tar.gz 的方式安装软件)安装某些数据时,会使用到里头的讲多包含文件喔
- /usr/lib/
- 包含各应用软件的函数库、目标文件(object file),以及不被一般用户惯用的执行文件或脚本(script);某些软件会提供一些特殊的指令来进行朋务器的设定,这些指令也不会经常被系统管理员操作,那就会被存放到这个目彔下啦
- 要注意的是,如果你使用的是 X86_64 的 Linux 系统, 那可能会有/usr/lib64/目录产生喔
- /usr/local/
- 系统管理员在本机自行安装自己下载的软件(非 distribution 提供),建议安装到此目录, 这样会比较便于管理
- /usr/sbin/
- 非系统正常运作所需要的系统指令
- 最常见的就是某些网络服务器软件的服务指令(daemon)啰
- /usr/share/
- 放置共享文件的地方,在这个目彔下放置的数据几乎是不分硬件架构均可读取的数据
- /usr/src/
- 一般源码建议放置于此目录,至于Linux核心源码则建议放置于/usr/src/linux/
- /var (variable):与系统运行过程有关,其子目录内容及意义(如果/usr 是安装时会占用较大硬盘容量的目彔,那么/var 就是在系统运作后才会渐渐占用硬盘容量的目彔。 因为/var 目彔主要针对经常性变动的文件,包括缓存(cache)、登彔文件(log file)以及某些软件运作所产生的文件, 包括程序文件(lock file, run file),或者例如 MySQL 数据库的文件等等)
- /var/lib/
- 程序本身执行的过程中,需要使用到的数据文件放置的目彔。在此目彔下各自的软件应该要有各自的目彔。 丼例来说,MySQL 的数据库放置到/var/lib/mysql/而rpm 的数据库则放到/var/lib/rpm 去
- /var/lock/
- 某些装置或者是文件资源一次只能被一个应用程序所使用,如果同时有两个程序使用该装置时, 就可能产生一些错误的状况,因此就得要将该装置上锁(lock),以确保该装置只会给单一软件所使用。 丼例来说,刻彔机正在刻彔一块光盘,你想一下,会不会有两个人同时在使用一个刻彔机烧片? 如果两个人同时刻彔,那片子写入的是谁的资料?所以当第一个人在刻彔时该刻彔机就会被上锁, 第二个人就得要该装置被解除锁定(就是前一个人用完了)才能够继续使用啰
- /var/mail/
- 放置个人电子邮件信箱的目彔,不过这个目彔也被放置到/var/spool/mail/目彔中! 通常这两个目彔是互为链接文件啦
- /var/run/
- 某些程序或者是服务启动后,会将他们的 PID 放置在这个目彔下喔
- /var/spool/
- 这个目彔通常放置一些队列数据,所谓的『队列』就是排队等待其他程序使用的数据啦! 这些数据被使用后通常都会被删除。
- 丼例来说,系统收到新信会放置到/var/spool/mail/中, 但用户收下该信件后该封信原则上就会被删除。信件如果暂时寄不出去会被放到/var/spool/mqueue/中, 等到被送出后就被删除。
- 如果是工作排程数据(crontab),就会被放置到/var/spool/cron/目彔中!
- 其它3个FHS未定以但同样非常重要的目录:
- /lost+found
- 这个目彔是使用标准的 ext2/ext3/ext4 文件系统格式才会产生的一个目彔,目的在于当文件系统发生错误时, 将一些丢失的片段放置到这个目彔下。
- 这个目彔通常会在分区的最顶层存在, 例如你加装一块硬盘于/disk 中,那在这个系统下就会自动产生一个这样的目彔『/disk/lost+found』
- /proc
- 这个目彔本身是一个『虚拟文件系统(virtual filesystem)』喔!他放置的数据都是在内存当中, 例如系统核心、行程信息(process)、周边装置的状态及网络状态等等。
- 因为这个目彔下的数据都是在内存当中, 所以本身不占任何硬盘空间啊
- /sys
- 这个目彔其实跟/proc 非常类似,也是一个虚拟的文件系统,主要也是记彔与核心相关的信息。 包括目前已加载的核心模块与核心侦测到的硬件装置信息等等。这个目彔同样丌占硬盘容量喔!
- 如下这些目录(当然指的是上面介绍的那些顶级目录了)不应该与根目录挂载于不同的分区,你还能说出原因吗:
- /etc
- /bin
- /dev
- /lib
- /sbin