现在的位置: 首页 > 综合 > 正文

Linux目录结构 / 目录配置标准FHS(Filesystem Hierarchy Standard)(鸟哥的Linux私房菜基础学习篇第三版-第六章)

2017年12月03日 ⁄ 综合 ⁄ 共 3408字 ⁄ 字号 评论关闭
  • FHS定义的四种目录作用交互形态:

    • 可分享的

      • 可以分享给其它系统挂载使用的目录
    • 不可分享的

      • 自己机器上面运作的设备文件或者与程序有关的socket文件等,由于仅与自身机器有关,所以当然就不适合分享给其它主机了
    • 可变动的

      • 经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等
    • 不可变动的

      • 有些数据是不会经常变动的,跟随着 distribution 而不变动。 例如函数库、文件说明文件、系统管理员所管理的主机服务配置文件等等

  • FHS定义的3个目录:
    • / (root,根目录):与开机系统有关,其子目录内容及意义:(1.根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的, 同时根目录也与开机/还原/系统修复等动作有关;2.由于系统开机时需要特定的开机软件、内核文件、开机所需程序、函数库等文件数据,若系统出现错误时,根目录也必须要包含有能够修复文件系统的程序才行。3.因为根目录是如此的重要,所以FHS标准建议:根目录所在分区越小越好,且应用程序所安装的软件最好不要与根目录放在统一个分区内,如此不但性能较好,根目录所在文件系统也较不容易发生问题;)

      • /bin

        • 放置的是在单用户维护模式下还能够被操作的指令
      • /boot

        • 放置的是开机会使用到的文件
      • /dev

        • 放置的设备文件,访问这个目录下的某个文件就等于访问某个设备
      • /etc

        • 放置的是系统主要的配置文件
      • /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/里面)
      • /tmp

        • 系统临时程序、数据目录
    • /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/cache/

        • 应用程序本身运作过程中会产生的一些暂存文件
      • /var/lib/

        • 程序本身执行的过程中,需要使用到的数据文件放置的目彔。在此目彔下各自的软件应该要有各自的目彔。 丼例来说,MySQL 的数据库放置到/var/lib/mysql/而rpm 的数据库则放到/var/lib/rpm 去
      • /var/lock/

        • 某些装置或者是文件资源一次只能被一个应用程序所使用,如果同时有两个程序使用该装置时, 就可能产生一些错误的状况,因此就得要将该装置上锁(lock),以确保该装置只会给单一软件所使用。 丼例来说,刻彔机正在刻彔一块光盘,你想一下,会不会有两个人同时在使用一个刻彔机烧片? 如果两个人同时刻彔,那片子写入的是谁的资料?所以当第一个人在刻彔时该刻彔机就会被上锁, 第二个人就得要该装置被解除锁定(就是前一个人用完了)才能够继续使用啰
      • /var/log/

        • 重要到不行!这是登彔文件放置的目彔
      • /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

抱歉!评论已关闭.