Linux 的目录树的目录树
目录树可以分为小的部分,每个部分可以在自己的磁盘或分区上。主要部分是根、/usr 、/var 和 /home 文件系
统。每个部分有不同的目的。
每台机器都有根文件系统,它包含系统引导和使其他文件系统得以 mount 所必要的文件,根文件系统应该有单用户状态所必
须的足够的内容。还应该包括修复损坏系统、恢复备份等的工具。
/usr 文件系统包含所有命令、库、man 页和其他一般操作中所需的不改变的文件。 /usr 不应该有一般使用中要修改的文件。
这样允许此文件系统中的文件通过网络共享,这样可以更有效,因为这样节省了磁盘空间(/usr 很容易是数百兆),且易于管理
(当升级应用时,只有主/usr 需要改变,而无须改变每台机器) 即使此文件系统在本地盘上,也可以只读 mount,以减少系统崩
溃时文件系统的损坏。
/var 文件系统包含会改变的文件,比如 spool 目录(mail、news、打印机等用的), log文件、formatted manual pages 和暂存
文件。传统上/var 的所有东西曾在 /usr 下的某个地方,但这样/usr 就不可能只读安装了。
/home 文件系统包含用户家目录,即系统上的所有实际数据。一个大的/home 可能要分为若干文件系统,需要在/home 下加一
级名字,如/home/students 、/home/staff 等。
虽然上面将不同的部分称为文件系统,但它们不必是真的分离的文件系统。如果系统是小的单用户系统,而用户希望简单化,
可以很容易地放在一个文件系统中。根据磁盘容量和不同目的所需分配的空间,目录树也可以分到不同的文件系统中。重要的
是使用标准的名字,即使/var 和/usr 在同一分区上,名字/usr/lib/libc.a 和/var/adm/messages 必须能工作,例如将/var 下的文
件移动到/usr/var ,并将/var 作为/usr/var 的符号连接。
Unix 文件结构根据目的来分组文件,即所有的命令在一个地方,所有的数据在另一个地方,所有的文档又在一个地方,等
等。另一个方法是根据属于的程序分组文件,即所有 Emacs 文件在一个目录中,所有TeX文件在另一个中,等等。后一种方
法的问题是文件难于共享(程序目录经常同时包含静态可共享的和动态不可共享的文件),有时难于查找 (例如 man 页在极大数
量的地方,使 man 程序查找它们极其困难)。
根文件系统
根文件系统一般应该比较小,因为包括严格的文件和一个小的不经常改变的文件系统不容易损坏。损坏的根文件系统一般意味
着除非用特定的方法(例如从软盘)系统无法引导。
根目录一般不含任何文件,除了可能的标准的系统引导映象,通常叫/vmlinuz 。所有其他文件在根文件系统的子目录中。
/bin
引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。
/sbin
类似/bin ,但不给普通用户使用,虽然如果必要且允许时可以使用。
/etc
特定机器的配置文件。
/root
root用户的家目录。
/lib
根文件系统上的程序所需的共享库。
/lib/modules
核心可加载模块,特别是那些恢复损坏系统时引导所需的(例如网络和文件系统驱动)。
/dev
设备文件。
/tmp
临时文件。引导启动后运行的程序应该使用/var/tmp ,而不是/tmp ,因为前者可能在一个拥有更多空间的磁盘上。
/boot
引导加载器(bootstrap loader)使用的文件,如LILO。核心映象也经常在这里,而不是在根目录。如果有许多核心映象,这个