Linux 文件层次结构
Linux 文件层次结构或文件系统层次标准 (FHS) 定义了类 Unix 操作系统中的目录结构和目录内容。它由 Linux 基金会维护。
- 在 FHS 中,所有文件和目录都出现在根目录 / 下,即使它们存储在不同的物理或虚拟设备上。
- 如果安装了某些子系统,例如 X Window 系统,则其中一些目录仅存在于特定系统上。
- 大多数这些目录存在于所有 UNIX 操作系统中,并且通常以大致相同的方式使用;但是,这里的描述是专门用于 FHS 的,对于 Linux 以外的平台不具有权威性。
1./(Root):整个文件系统层次结构的主层次根和根目录。
- 每个文件和目录都从根目录开始
- 唯一的root用户在这个目录下有写权限
- /root是root用户的家目录,和/不一样
2. /bin :需要在单用户模式下可用的基本命令二进制文件;对于所有用户,例如 cat、ls、cp。
- 包含二进制可执行文件
- 您需要在单用户模式下使用的常用 linux 命令位于此目录下。
- 系统所有用户使用的命令都位于此处,例如 ps、ls、ping、grep、cp
3. /boot :引导加载程序文件,例如内核、initrd。
- 内核 initrd、vmlinux、grub 文件位于 /boot 下
- 示例:initrd.img-2.6.32-24-generic、vmlinuz-2.6.32-24-generic
4. /dev :基本设备文件,例如,/dev/null。
- 这些包括终端设备、USB 或连接到系统的任何设备。
- 示例:/dev/tty1、/dev/usbmon0
5. /etc :特定于主机的系统范围的配置文件。
- 包含所有程序所需的配置文件。
- 这还包含用于启动/停止单个程序的启动和关闭 shell 脚本。
- 示例:/etc/resolv.conf、/etc/logrotate.conf。
6. /home :用户的家目录,包含保存的文件、个人设置等。
- 供所有用户存储其个人文件的主目录。
- 例如:/home/kishlay、/home/kv
7. /lib :对 /bin/ 和 /sbin/ 中的二进制文件必不可少的库。
- 库文件名是 ld* 或 lib*.so.*
- 示例:ld-2.11.1.so、libncurses.so.5.7
8. /media : CD-ROM 等可移动媒体的挂载点(出现在 FHS-2.3 中)。
- 可移动设备的临时挂载目录。
- 例如,/media/cdrom 用于 CD-ROM; /media/floppy 用于软盘驱动器; /media/cdrecorder 用于 CD 刻录机
9. /mnt :临时挂载的文件系统。
- 系统管理员可以挂载文件系统的临时挂载目录。
10. /opt :可选的应用程序软件包。
- 包含来自各个供应商的附加应用程序。
- 附加应用程序应安装在 /opt/ 或 /opt/ 子目录下。
11. /sbin :基本系统二进制文件,例如 fsck、init、route。
- 就像 /bin 一样,/sbin 也包含二进制可执行文件。
- 位于此目录下的 linux 命令通常由系统管理员使用,用于系统维护目的。
- 示例:iptables、重启、fdisk、ifconfig、swapon
12. /srv :该系统提供的站点特定数据,例如 Web 服务器的数据和脚本、FTP 服务器提供的数据以及版本控制系统的存储库。
- srv 代表服务。
- 包含服务器特定服务相关数据。
- 例如,/srv/cvs 包含 CVS 相关数据。
13. /tmp :临时文件。通常不会在系统重新启动之间保留,并且可能会受到严格的大小限制。
- 包含系统和用户创建的临时文件的目录。
- 该目录下的文件在系统重启时被删除。
14. /usr :只读用户数据的二级层次结构;包含大多数(多)用户实用程序和应用程序。
- 包含二级程序的二进制文件、库、文档和源代码。
- /usr/bin 包含用户程序的二进制文件。如果在 /bin 下找不到用户二进制文件,请在 /usr/bin 下查找。例如:at、awk、cc、less、scp
- /usr/sbin 包含供系统管理员使用的二进制文件。如果在 /sbin 下找不到系统二进制文件,请在 /usr/sbin 下查找。例如:atd、cron、sshd、useradd、userdel
- /usr/lib 包含 /usr/bin 和 /usr/sbin 的库
- /usr/local 包含您从源代码安装的用户程序。例如,当您从源代码安装 apache 时,它位于 /usr/local/apache2
- /usr/src 包含 Linux 内核源代码、头文件和文档。
15. /proc :提供进程和内核信息作为文件的虚拟文件系统。在Linux中,对应一个procfs挂载。通常由系统动态生成和填充。
- 包含有关系统进程的信息。
- 这是一个伪文件系统,包含有关正在运行的进程的信息。例如:/proc/{pid} 目录包含有关具有该特定 pid 的进程的信息。
- 这是一个包含有关系统资源的文本信息的虚拟文件系统。例如:/proc/uptime
现代 Linux 发行版包括一个 /run 目录作为临时文件系统 (tmpfs),它存储易失性运行时数据,遵循 FHS 3.0 版。根据 FHS 2.3 版,此类数据存储在 /var/run 中,但在某些情况下这是一个问题,因为该目录在早期启动时并不总是可用。结果,这些程序不得不求助于技巧,例如使用 /dev/.udev、/dev/.mdadm、/dev/.systemd 或 /dev/.mount 目录,即使设备目录不是预期的对于此类数据。除其他优点外,这使得系统更容易在以只读方式安装的根文件系统的情况下正常使用。例如,以下是 Debian 在其 2013 Wheezy 版本中所做的更改:
- /dev/.* ? /跑/*
- /dev/shm ? /运行/shm
- /dev/shm/* ? /跑/*
- /etc/*(可写文件)? /跑/*
- /lib/init/rw ? /跑
- /var/锁 ? /运行/锁定
- /var/运行 ? /跑
- /tmp ? /运行/tmp