Filesystem Hierarchy Standard

Filesystem Hierarchy Standard

文件系统层次结构标准(英语:Filesystem Hierarchy Standard,FHS)定义了Linux操作系统中的主要目录及目录内容。FHS由Linux基金会维护。 当前版本为3.0版,于2015年发布。

文档内容不多,英文内容差不多50页,可以很快阅读一遍。

先看下摘要:

This standard consists of a set of requirements and guidelines for file and directory placement under UNIX-like
operating systems. The guidelines are intended to support interoperability of applications, system administration tools,
development tools, and scripts as well as greater uniformity of documentation for these systems.

大体意思就是说要为UNIX-like的系统确定一个文件和目录位置的规范。

接下来文章分成以下几部分:

  1. 根文件系统——The Root Filesystem
    规定了根目录下需要有那些目录文件。
    下面的目录(无论是不是链接)都需要在根目录下存在:
目录 描述
bin Essential command binaries
boot Static files of the boot loader
dev Device files
etc Host-specific system configuration
lib Essential shared libraries and kernel modules
media Mount point for removable media
mnt Mount point for mounting a filesystem temporarily
opt Add-on application software packages
run Data relevant to running processes
sbin Essential system binaries
srv Data for services provided by this system
tmp Temporary files
usr Secondary hierarchy
var Variable data
  1. /usr目录结构——The /usr Hierarchy
    规定了usr目录下需要有哪些文件。
    需要注意的是/usr不是user的缩写,其实usr是Unix Software Resource的缩写, 也就是Unix操作系统软件资源所放置的目录,而不是用户的数据;所有系统默认的软件都会放置到/usr, 系统安装完时,这个目录会占用最多的硬盘容量

  2. /var目录结构——The /var Hierarchy
    规定了var目录下需要有哪些文件.
    /var 包含系统一般运行时要改变的数据。通常这些数据所在的目录的大小是要经常变化或扩充的。

  3. 操作系统其他的一些特定组件

为了更直观地了解文件目录结构,这里放一张2.0版本的图:
在这里插入图片描述

  • /:根文件系统的根,系统上所有文件的访问入口

  • 存放操作系统自身运行使用的二进制程序

    • /bin: 管理员和普通用户都可以使用
    • /sbin:管理员才能执行的命令
  • 存放运行正常功能的二进制程序

    • /usr/bin:管理员和普通用户都可以使用
    • /usr/sbin:管理员才能执行的命令
  • 存放第三方软件的二进制程序

    • /usr/local/bin:管理员和普通用户都可以使用
    • /usr/local/sbin:管理员才能执行的命令
  • /boot:存放系统引导文件:内核、``ramfs文件``、``bootloader(grub)``

  • /dev:存放内核识别的设备文件(设备在内核中会映射成设备文件存放在该目录下,该目录下的设备文件要想实现被访问必须先进行挂载)

    • 该目录的生成机制

      • 1.内核在初始化时通过devtmps(用于在内核初始化时为基本设备创建设备文件的临时文件系统)机制在initramfs(根文件系统所在设备的设备驱动模块)上创建基本设备文件
      • 2.用户空间初始化时通过udev机制在结合/etc/udev/rules.d/*.rules配置文件在/dev目录下创建devtmps尚未创建的设备文件
      • 3.如果还有设备文件没有创建,就使用mknod命令手动创建设备文件
    • cdrom:光盘(CD/DVD)映射形成的便携式设备文件,它是一个符号链接,链接到sr0设备文件

    • sr0:光盘(CD/DVD)映射形成的便携式设备文件

    • zer0:该设备文件存储的全部是0

    • null:存储到该设备文件中的数据都会自动消失

    • console:物理终端控制台,集成在芯片中,系统刚启动时或启动过程中进行交互的终端

    • ttys#:串行终端,使用串口连接的终端,#代表数字

    • tty#:虚拟终端,附加在物理终端上可以任意切换,系统启动完成后进行交互的终端,#代表数字

      • Ctrl+Alt+F1~F6快捷键可以启动或者说切换到虚拟终端tty1~tty6
      • Ctrl+Alt+F7快捷键可以启动图形终端
    • pts/#:伪终端,远程连接或图形界面下打开的命令接口,#代表数字

  • /etc:配置文件的集中存放目录

    • fstab:该文件定义了设备文件自动挂载表,系统开机初始化时,会读取该文件根据自动挂载表进行自动挂载设备文件操作。可以通过编辑该文件实现开机自动挂载设备;该文件中六段的意义如下:
      • 1、要挂载的设备:设备的描述形式===设备文件路径LABEL=""UUID=""
      • 2、挂载点:有的文件系统没有挂载点,swap就没有挂载点,它的挂载点就是swap
      • 3、文件系统类型:xfsswapext4
      • 4、挂载选项:多个选项间使用逗号分隔,默认是defaults
      • 5、备份频率:0-从不备份1-每日备份2-每隔一天备份
      • 6、开机自检次序:1-首先自检,通常只能被/使用2-根自检完后再自检0-从不自检
    • services:名称解析库,实现端口和服务名称之间进行转换
    • mtab:存放当前系统所有的设备挂载信息,mount命令会自动修改该文件
    • init.d:目录,存放系统开机初始化脚本文件
    • ld.so.conf:存放程序编译源代码过程中链接(ld)时所要查找动态格式共享对象库时所要查找的路径
    • ld.so.conf.d:目录,存放动态链接库查找路径的所有配置文件
    • sysconfig:存放系统级别的应用信息
  • /home:普通用户,默认在/home下有一个与其名称同名目录,作为用户的家目录

  • /root:管理员的家目录

  • /lib:存放32位库文件

  • /lib64:存放64位库文件

  • /media:专用挂载位置,通常用来挂载便携式设备

  • /mnt:专用挂载位置,通常用来挂载额外的存储设备

  • /misc:杂项,备用目录

  • /opt:可选目录,但通常用来安装第三方软件

  • /proc:所显示的文件都不是文件,伪文件系统,保存运行中的内核参数的映射,不能使用vim等编辑器打开;该目录下的绝大数文件都没有写权限,即使是管理员也无法编辑修改大多数文件;linux将内核中所有进程的参数通过/proc伪文件系统目录向用户空间提供访问查看的入口。每一个进程会以自己的PID号为目录名创建一个目录文件来保持自己的相关信息

    • version:存放当前系统正在运行内核的版本
    • partitions:存放当前系统所有挂载磁盘的分区信息
    • meminfo:存放当前系统的内存信息
    • filesystems;存放当前系统内核识别出的文件系统的类型信息
    • mounts:存放当前系统所有的设备挂载信息,内核维持并修改该文件的信息
    • vm/swappiness:该文件定义了Linux的内存使用机制
    • sys:该目录下的文件有很多是提供写权限的,即提供了修改内核参数的入口
    • cmdline:内核启动时传递给内核的参数。每个进程目录下都有一个该文件用来传递参数给内核
  • /sys:伪文件系统,系统级别的用于配置硬件设备相关的参数

  • /srv:为服务提供数据存放位置

  • /tmp:临时文件系统:默认存放30天

  • /usr:存放应用程序的相关文件

    • shared: 存放应用程序的说明帮助文档
    • include:存放应用程序的头文件
  • /var:存放经常发生变化的文件

    • /var/log:存放日志文件
    • /var/lock:存放锁文件
    • /var/cache:存放缓存文件

reference

https://refspecs.linuxfoundation.org/
https://www.blackmoreops.com/2015/06/18/linux-file-system-hierarchy-v2-0

posted @ 2022-08-28 23:34  main_c  阅读(68)  评论(0)    收藏  举报