使用 FHS 规范 Linux 目录使用
在 Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点(/)开始的倒置的树状结构
文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。
在Linux文件系统中有两个特殊的目录,一个用户所在的工作目录,也叫当前目录,可以使用一个点 . 来表示;另一个是当前目录的上一级目录,也叫父目录,可以使用两个点 .. 来表示。
- . :代表当前的目录,也可以使用 ./ 来表示;
- .. :代表上一层目录,也可以 ../ 来代表。
如果一个目录或文件名以一个点 . 开始,表示这个目录或文件是一个隐藏目录或文件(如:.bashrc)。即以默认方式查找时,不显示该目录或文件。
目录结构
目录 | 描述 |
---|---|
/ |
第一层次结构 的根、 整个文件系统层次结构的根目录。 |
/bin/ |
需要在单用户模式可用的必要命令(可执行文件);面向所有用户,例如: cat、 ls、 cp。 |
/boot/ |
引导程序文件,例如: kernel、initrd;时常是一个单独的分区[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 |
这个目录平时是空的,当系统非正常关机而留下的“无家可归”的文件便会储存在这里 |
目录实践
网站、FTP 存放位置
在 Linux 文件系统中,
/srv
目录是用来存放服务器特定的数据的。/srv/www
来保存网站的 HTML 和相关文件/srv/ftp
来存放 FTP 的文件
自己编写的程序存放位置
/usr/local/bin
:用于存放用户编译的可执行文件,这些文件对所有用户都可用。/usr/local/sbin
:用于存放用户编译的系统管理程序,这些程序通常只对超级用户可用。