使用 FHS 规范 Linux 目录使用

在 Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点(/)开始的倒置的树状结构

linux2bfile2bsystem2bhierarchy

文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。

在Linux文件系统中有两个特殊的目录,一个用户所在的工作目录,也叫当前目录,可以使用一个点 . 来表示;另一个是当前目录的上一级目录,也叫父目录,可以使用两个点 .. 来表示。

  • . :代表当前的目录,也可以使用 ./ 来表示;
  • .. :代表上一层目录,也可以 ../ 来代表。

如果一个目录或文件名以一个点 . 开始,表示这个目录或文件是一个隐藏目录或文件(如:.bashrc)。即以默认方式查找时,不显示该目录或文件。

目录结构

目录 描述
/ 第一层次结构 的根、 整个文件系统层次结构的根目录
/bin/ 需要在单用户模式可用的必要命令(可执行文件);面向所有用户,例如catlscp
/boot/ 引导程序文件,例如: kernelinitrd;时常是一个单独的分区[8]
/dev/ 英文 device,必要设备, 例如:/dev/null.
/etc/ 特定主机,系统范围内的配置文件。关于这个名称目前有争议。在贝尔实验室关于UNIX 实现文档的早期版本中,/etc 被称为etcetera, [9] 这是由于过去此目录中存放所有不属于别处的所有东西(然而,FHS限制/etc只能存放静态配置文件,不能包含二进制文件)。 [10] 自从早期文档出版以来,目录名称已被以各种方式重新称呼。最近的解释包括逆向首字母缩略词如:"可编辑的文本配置"(英文 "Editable Text Configuration")或"扩展工具箱"(英文 "Extended Tool Chest")。 [11]
/etc/opt/ /opt/的配置文件
/etc/X11/ X窗口系统(版本11)的配置文件
/etc/sgml/ SGML的配置文件
/etc/xml/ XML的配置文件
/home/ 用户的家目录,包含保存的文件、个人设置等,一般为单独的分区。
/lib/ /bin//sbin/中二进制文件必要的文件。
/media/ 可移除媒体(如CD-ROM)的挂载点 (在FHS-2.3中出现)。
/mnt/ 临时挂载的文件系统。
/opt/ 可选应用软件。[12]
/proc/ 虚拟文件系统,将内核进程状态归档为文本文件。例如:uptime、 network。在Linux中,对应Procfs格式挂载。
/root/ 超级用户家目录
/sbin/ 必要的系统二进制文件,例如: init、 ip、 mount。
/srv/ 站点的具体数据,由系统提供。
/tmp/ 临时文件(参见 /var/tmp),在系统重启时目录中文件不会被保留。
/usr/ 命名(Unix Software Resource),用于存储只读用户数据的第二层级目录; 包含绝大多数的()用户工具和应用程序[13]
/usr/bin/ 非必要可执行文件 (在单用户模式中不需要);面向所有用户。
/usr/include/ 标准包含文件
/usr/lib/ /usr/bin//usr/sbin/中二进制文件的
/usr/sbin/ 非必要的系统二进制文件,例如:大量网络服务守护进程。仅超级管理员可用。
/usr/share/ 体系结构无关(共享)数据。
/usr/src/ 源代码,例如:内核源代码及其头文件。
/usr/X11R6/ X窗口系统 版本 11, Release 6.
/usr/local/ 本地数据的第三层次, 具体到本台主机。通常而言有进一步的子目录, 例如:bin/lib/share/.[14]
/var/ 变量文件——在正常运行的系统中其内容不断变化的文件,如日志,脱机文件和临时电子邮件文件。有时是一个单独的分区。
/var/cache/ 应用程序缓存数据。这些数据是在本地生成的一个耗时的I/O或计算结果。应用程序必须能够再生或恢复数据。缓存的文件可以被删除而不导致数据丢失。
/var/lib/ 状态信息。 由程序在运行时维护的持久性数据。 例如:数据库、包装的系统元数据等。
/var/lock/ 锁文件,一类跟踪当前使用中资源的文件。
/var/log/ 日志文件,包含大量日志文件,为了防止日志占满根分区,生产环境中一般是单独分区。
/var/mail/ 用户的电子邮箱
/var/run/ 自最后一次启动以来运行中的系统的信息,例如:当前登录的用户和运行中的守护进程、一些守护进程的pid文件、socket文件。现已经被/run代替[15]
/var/spool/ 等待处理的任务的脱机文件例如:打印队列和未读的邮件。
/var/spool/mail/ 用户的邮箱(不鼓励的存储位置)
/var/tmp/ 在系统重启过程中可以保留的临时文件。
/run/ 代替/var/run目录。
/lost-found 这个目录平时是空的,当系统非正常关机而留下的“无家可归”的文件便会储存在这里

目录实践

  1. 网站、FTP 存放位置

    在 Linux 文件系统中,/srv 目录是用来存放服务器特定的数据的。

    • /srv/www 来保存网站的 HTML 和相关文件

    • /srv/ftp 来存放 FTP 的文件

  2. 自己编写的程序存放位置

    • /usr/local/bin:用于存放用户编译的可执行文件,这些文件对所有用户都可用。
    • /usr/local/sbin:用于存放用户编译的系统管理程序,这些程序通常只对超级用户可用。

参考

文件系统层次结构标准 - 维基百科,自由的百科全书 (wikipedia.org)

Linux 系统目录结构 | 菜鸟教程 (runoob.com)