diff --git a/published/20150813 Linux file system hierarchy v2.0.md b/published/20150813 Linux file system hierarchy v2.0.md new file mode 100644 index 0000000000..6a68efbd67 --- /dev/null +++ b/published/20150813 Linux file system hierarchy v2.0.md @@ -0,0 +1,440 @@ +Linux 文件系统结构介绍 +================================================================================ + + + +Linux中的文件是什么?它的文件系统又是什么?那些配置文件又在哪里?我下载好的程序保存在哪里了?在 Linux 中文件系统是标准结构的吗?好了,上图简明地阐释了Linux的文件系统的层次关系。当你苦于寻找配置文件或者二进制文件的时候,这便显得十分有用了。我在下方添加了一些解释以及例子,不过“篇幅较长,可以有空再看”。 + +另外一种情况便是当你在系统中获取配置以及二进制文件时,出现了不一致性问题,如果你是在一个大型组织中,或者只是一个终端用户,这也有可能会破坏你的系统(比如,二进制文件运行在旧的库文件上了)。若然你在[你的Linux系统上做安全审计][1]的话,你将会发现它很容易遭到各种攻击。所以,保持一个清洁的操作系统(无论是Windows还是Linux)都显得十分重要。 + +### Linux的文件是什么? ### + +对于UNIX系统来说(同样适用于Linux),以下便是对文件简单的描述: + +> 在UNIX系统中,一切皆为文件;若非文件,则为进程 + +这种定义是比较正确的,因为有些特殊的文件不仅仅是普通文件(比如命名管道和套接字),不过为了让事情变的简单,“一切皆为文件”也是一个可以让人接受的说法。Linux系统也像UNIX系统一样,将文件和目录视如同物,因为目录只是一个包含了其他文件名的文件而已。程序、服务、文本、图片等等,都是文件。对于系统来说,输入和输出设备,基本上所有的设备,都被当做是文件。 + +题图版本历史: + +- Version 2.0 – 17-06-2015 + - – Improved: 添加标题以及版本历史 + - – Improved: 添加/srv,/meida和/proc + - – Improved: 更新了反映当前的Linux文件系统的描述 + - – Fixed: 多处的打印错误 + - – Fixed: 外观和颜色 +- Version 1.0 – 14-02-2015 + - – Created: 基本的图表 + - – Note: 摒弃更低的版本 + +### 下载链接 ### + +以下是大图的下载地址。如果你需要其他格式,请跟原作者联系,他会尝试制作并且上传到某个地方以供下载 + +- [大图 (PNG 格式) – 2480×1755 px – 184KB][2] +- [最大图 (PDF 格式) – 9919x7019 px – 1686KB][3] + +**注意**: PDF格式文件是打印的最好选择,因为它画质很高。 + +### Linux 文件系统描述 ### + +为了有序地管理那些文件,人们习惯把这些文件当做是硬盘上的有序的树状结构,正如我们熟悉的'MS-DOS'(磁盘操作系统)就是一个例子。大的分枝包括更多的分枝,分枝的末梢是树的叶子或者普通的文件。现在我们将会以这树形图为例,但晚点我们会发现为什么这不是一个完全准确的一幅图。 + +
目录 | +描述 | +
---|---|
+ /
+ |
+ 主层次 的根,也是整个文件系统层次结构的根目录 | +
+ /bin
+ |
+ 存放在单用户模式可用的必要命令二进制文件,所有用户都可用,如 cat、ls、cp等等 | +
+ /boot
+ |
+ 存放引导加载程序文件,例如kernels、initrd等 | +
+ /dev
+ |
+ 存放必要的设备文件,例如/dev/null |
+
+ /etc
+ |
+ 存放主机特定的系统级配置文件。其实这里有个关于它名字本身意义上的的争议。在贝尔实验室的UNIX实施文档的早期版本中,/etc表示是“其他(etcetera)目录”,因为从历史上看,这个目录是存放各种不属于其他目录的文件(然而,文件系统目录标准 FSH 限定 /etc 用于存放静态配置文件,这里不该存有二进制文件)。早期文档出版后,这个目录名又重新定义成不同的形式。近期的解释中包含着诸如“可编辑文本配置”或者“额外的工具箱”这样的重定义 | +
+
+
+ /etc/opt
+
+
+ |
+ 存储着新增包的配置文件 /opt/ . |
+
+
+
+ /etc/sgml
+
+
+ |
+ 存放配置文件,比如 catalogs,用于那些处理SGML(译者注:标准通用标记语言)的软件的配置文件 | +
+
+
+ /etc/X11
+
+
+ |
+ X Window 系统11版本的的配置文件 | +
+
+
+ /etc/xml
+
+
+ |
+ 配置文件,比如catalogs,用于那些处理XML(译者注:可扩展标记语言)的软件的配置文件 | +
+ /home
+ |
+ 用户的主目录,包括保存的文件,个人配置,等等 | +
+ /lib
+ |
+ /bin/ 和 /sbin/ 中的二进制文件的必需的库文件 |
+
+ /lib<架构位数>
+ |
+ 备用格式的必要的库文件。 这样的目录是可选的,但如果他们存在的话肯定是有需要用到它们的程序 | +
+ /media
+ |
+ 可移动的多媒体(如CD-ROMs)的挂载点。(出现于 FHS-2.3) | +
+ /mnt
+ |
+ 临时挂载的文件系统 | +
+ /opt
+ |
+ 可选的应用程序软件包 | +
+ /proc
+ |
+ 以文件形式提供进程以及内核信息的虚拟文件系统,在Linux中,对应进程文件系统(procfs )的挂载点 | +
+ /root
+ |
+ 根用户的主目录 | +
+ /sbin
+ |
+ 必要的系统级二进制文件,比如, init, ip, mount | +
+ /srv
+ |
+ 系统提供的站点特定数据 | +
+ /tmp
+ |
+ 临时文件 (另见 /var/tmp ). 通常在系统重启后删除 |
+
+ /usr
+ |
+ 二级层级存储用户的只读数据; 包含(多)用户主要的公共文件以及应用程序 | +
+
+
+ /usr/bin
+
+
+ |
+ 非必要的命令二进制文件 (在单用户模式中不需要用到的);用于所有用户 | +
+
+
+ /usr/include
+
+
+ |
+ 标准的包含文件 | +
+
+
+ /usr/lib
+
+
+ |
+ 库文件,用于/usr/bin/ 和 /usr/sbin/ 中的二进制文件 |
+
+
+
+ /usr/lib<架构位数>
+
+
+ |
+ 备用格式库(可选的) | +
+
+
+ /usr/local
+
+
+ |
+ 三级层次 用于本地数据,具体到该主机上的。通常会有下一个子目录, 比如, bin/ , lib/ , share/ . |
+
+
+
+ /usr/local/sbin
+
+
+ |
+ 非必要系统的二进制文件,比如用于不同网络服务的守护进程 | +
+
+
+ /usr/share
+
+
+ |
+ 架构无关的 (共享) 数据. | +
+
+
+ /usr/src
+
+
+ |
+ 源代码,比如内核源文件以及与它相关的头文件 | +
+
+
+ /usr/X11R6
+
+
+ |
+ X Window系统,版本号:11,发行版本:6 | +
+ /var
+ |
+ 各式各样的(Variable)文件,一些随着系统常规操作而持续改变的文件就放在这里,比如日志文件,脱机文件,还有临时的电子邮件文件 | +
+
+
+ /var/cache
+
+
+ |
+ 应用程序缓存数据. 这些数据是由耗时的I/O(输入/输出)的或者是运算本地生成的结果。这些应用程序是可以重新生成或者恢复数据的。当没有数据丢失的时候,可以删除缓存文件 | +
+
+
+ /var/lib
+
+
+ |
+ 状态信息。这些信息随着程序的运行而不停地改变,比如,数据库,软件包系统的元数据等等 | +
+
+
+ /var/lock
+
+
+ |
+ 锁文件。这些文件用于跟踪正在使用的资源 | +
+
+
+ /var/log
+
+
+ |
+ 日志文件。包含各种日志。 | +
+
+
+ /var/mail
+
+
+ |
+ 内含用户邮箱的相关文件 | +
+
+
+ /var/opt
+
+
+ |
+ 来自附加包的各种数据都会存储在 /var/opt/ . |
+
+
+
+ /var/run
+
+
+ |
+ 存放当前系统上次启动以来的相关信息,例如当前登入的用户以及当前运行的daemons(守护进程). | +
+
+
+ /var/spool
+
+
+ |
+ 该spool主要用于存放将要被处理的任务,比如打印队列以及邮件外发队列 | +
+
+
+
+
+ /var/mail
+
+
+
+
+ |
+ 过时的位置,用于放置用户邮箱文件 | +
+
+
+ /var/tmp
+
+
+ |
+ 存放重启后保留的临时文件 | +
Directory(目录) | -Description(描述) | -|
---|---|---|
|
- 主层次 的根,也是整个文件系统层次结构的根目录 | -|
|
- 存放在单用户模式可用的必要命令二进制文件,对于所有用户而言,则是像cat,ls,cp等等的文件 | -|
|
- 存放引导加载程序文件,例如kernels,initrd等 | -|
|
- 存放必要的设备文件 | -|
|
- 存放主机特定的系统范围内的配置文件。其实这里有个关于它名字本身意义上的的争议。在贝尔实验室的早期UNIX实施文档版本中,/etc表示是“其他目录”,因为从历史上看,这个目录是存放各种不属于其他目录的文件(然而,FSH(文件系统目录标准)限定 /ect是用于存放静态配置文件,这里不该存有二进制文件)。早期文档出版后,这个目录名又重新定义成不同的形式。近期的解释中包含着诸如“可编辑文本配置”或者“额外的工具箱”这样的重定义 | -|
|
- 存储着新增包的配置文件 /opt/ . |
- |
|
- 存放配置文件,比如目录,还有那些处理SGML(译者注:标准通用标记语言)的软件的配置文件 | -|
|
- X Window系统的配置文件,版本号为11 | -- |
|
- 配置文件,比如目录,处理XML(译者注:可扩展标记语言)的软件的配置文件 | -|
|
- 用户的主目录,包括保存的文件, 个人配置, 等等. | -|
|
- /bin/ and /sbin/ 中的二进制文件必不可少的库文件 |
- |
|
- 备用格式的必要的库文件. 这样的目录视可选的,但如果他们存在的话, 他们还有一些要求. | -|
|
- 可移动的多媒体(如CD-ROMs)的挂载点.(出现于 FHS-2.3) | -|
|
- 临时挂载的文件系统 | -|
|
- 自定义应用程序软件包 | -|
|
- 以文件形式提供进程以及内核信息的虚拟文件系统,在Linux中,对应进程文件系统的挂载点 | -|
|
- 根用户的主目录 | -|
|
- 必要系统二进制文件, 比如, init, ip, mount. | -|
|
- 系统提供的站点特定数据 | -|
|
- 临时文件 (另见 /var/tmp ). 通常在系统重启后删除 |
- |
|
- 二级层级 存储用户的只读数据; 包含(多)用户主要的公共文件以及应用程序 | -|
|
- 非必要的命令二进制文件 (在单用户模式中不需要用到的); 用于所有用户. | -|
|
- 标准的包含文件 | -|
|
- 库文件,用于/usr/bin/ 和 /usr/sbin/ .中的二进制文件 |
- |
|
- 备用格式库(可选的). | -|
|
- 三级层次 用于本地数据, 具体到该主机上的.通常会有下一个子目录, 比如, bin/ , lib/ , share/ . |
- |
|
- 非必要系统的二进制文件, 比如,用于不同网络服务的守护进程 | -|
|
- 独立架构的 (共享) 数据. | -|
|
- 源代码, 比如, 内核源文件以及与它相关的头文件 | -|
|
- X Window系统,版本号:11,发行版本:6 | -|
|
- 各式各样的文件,一些随着系统常规操作而持续改变的文件就放在这里,比如日志文件,脱机文件,还有临时的电子邮件文件 | -|
|
- 应用程序缓存数据. 这些数据是根据I/O(输入/输出)的耗时结果或者是运算生成的.这些应用程序是可以重新生成或者恢复数据的.当没有数据丢失的时候,可以删除缓存文件. | -|
|
- 状态信息.这些信息随着程序的运行而不停地改变,比如,数据库,系统元数据的打包等等 | -|
|
- 锁文件。这些文件会持续监控正在使用的资源 | -|
|
- 日志文件. 包含各种日志. | -|
|
- 内含用户邮箱的相关文件 | -|
|
- 来自附加包的各种数据都会存储在 /opt/ . |
- |
|
- Information about the running system since last boot, e.g., currently logged-in users and running daemons. | -存放当前系统上次启动的相关信息, 例如, 当前登入的用户以及当前运行的daemons(守护进程). | -
|
- 该spool主要用于存放将要被处理的任务, 比如, 打印队列以及邮件传出队列 | -|
|
- 过时的位置,用于放置用户邮箱文件 | -|
|
- 存放重启之前的临时接口 | -