对话 UNIX,第 11 部分: 漫谈 UNIX 文件系统( 二 )


/var 是“variable的简写,它是用于存储那些大小通常随时间而增大的文件的存储库 。可以在 /var 中找到邮箱、日志文件、打印机队列和数据库 。通常可以将 Web 站点保存在 /var 中,因为 Web 站点可能会在一段时间后异常地累积大量的数据 。
以上是一些最常见的目录名,尽管某些 Unix 版本之间存在细微的差异 。(例如,在基于 FreeBSD?的 Mac OS X 上,将包含用户的 home 目录的目录命名为 /Users,而不是 /home 。)
保持传统
事实上,名称 etc、bin、lib 和 man 在 UNIX 的文化中是如此根深蒂固,以至于在计算机中的其他地方使用相同的名称来标注类似用途的目录已经成为一种传统 。例如,如果您查看一位专家的 home 目录,您很可能会在其中发现 bin 和 lib 目录分别存储个人应用程序以及脚本和个人库 。
同样地,/usr/local 中通常包括 etc、bin、lib、和 man 。在历史上,曾将 /usr/local 用于存储来自于您的站点或者仅与您的站点有密切关系的应用程序和数据 。/usr/local/bin 目录用于存储本地添加的、新的程序,以及标准系统实用工具的本地修改版本 。例如,您的系统管理员可能在 /usr/local/bin/perl 中提供了 Perl 的最新和最好的版本,同时保持 /usr/bin/perl 不变,以便进行引用,并且因为其他的核心实用工具可能仍然依赖于它 。/usr/local/lib 目录作为 /usr/local/bin 的补充 。
/usr/local 目录甚至可能是一个完全独立的分区(甚至是通过网络文件系统从 Network Attached Storage [NAS] 设备装入的分区),这使得可以更容易地对系统进行数据恢复和恢复使用 。如果系统中发生了某种情况,管理员可以覆盖操作系统的文件,而无需担心会破坏本地数据 。
甚至安装包也是用了类似的目录结构 。例如 MySQL:如果使用了选项 --prefix=/usr/local/mysql, 进行配置,那么它将在 /usr/local 中创建它自己的根目录,名为 /usr/local/mysql,并创建子目录 /usr/local/mysql/bin、/usr/local/mysql/lib 等等:
$ ls -1 /usr/local/mysql
bin/
configure*
data/
docs/
include/
lib/
man/
...
或者,如果您希望将 MySQL 的内容安装到 /usr/local/bin、/usr/local/lib 和其他地方,可以使用 --prefix=/usr/local 。
其他有趣的内容
因为本文只是简要地介绍,所以让我们再安排一些其他有趣的内容 。
/etc
/etc 目录是寻找配置文件的地方,这些配置文件通常以后缀 .conf 作为结束 。一个较大的包可能拥有它自己的子目录,以便收集用于这个包的所有配置文件 。Apache 是一个很好的例子;特别是,Apache V2.2 已经重新组织了它的配置文件,使其更具模块化,并具有更少的独立性 。
另一个新颖的内容是 /etc/init.d,其中包含当您的系统启动时运行的许多启动脚本 。如果您希望干净地重新启动一个守护进程,例如,在更改它的配置之后,可以在 /etc/init.d 中查找同名的脚本 。例如,要重新启动 Postfix 邮件传送代理(MTA),您可以运行:
$ /etc/init.d/postfix restart
/etc/init.d 还包含切换到单用户模式的脚本,以便重新启动并关闭计算机,并禁止登录 。
/var/spool
如前所述,/var 保存了那些大小可能随时间增大和缩小的文件 。与 / 一样,可以将 /var 划分为若干个子目录,每个子目录都有其自身的方案:
/var/spool/mail 是寻找您和其他用户的传入邮件的地方 。您的邮箱是一个简单的平面(连续的、非索引的)文件(除非您的系统管理员正在使用 maildir 格式) 。传入邮件追加到文件的尾部 。您所丢弃的邮件将从该文件中删除;并且当您读取一条新的消息时,将会更改并重写已有的消息状态字段 。您可以读写您自己的邮箱,但是可以通过权限防止您访问其他用户的邮箱 。(建议您不要直接编辑您的邮箱 。)

推荐阅读