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


/var/log 保存了一套系统日志文件,或者记录系统活动的文件 。这些日志记录了所有的活动,从邮件通信到失败的登录尝试 。通常,每个守护进程都拥有自己的日志文件,这使得当一个服务失败时很容易搜寻所发生的问题 。因为可以显示系统活动,所以对日志文件的访问通常会受到限制,只有超级用户才可以访问 。
如果您的系统提供了集中的传真服务,那么 /var/spool 还将对这些请求进行排队 。
/usr/man
用于您的 Unix 系统的核心 man 页面位于 /usr/man 中 。还可以在 /usr/local/man 和包的 man 目录(如 /usr/local/mysql5/man)中找到 man 页面的扩展集合 。
因为 man 页面可能像可执行文件那样存放于许多不同的地方,所以 man 程序支持与 PATH 工作方式相同的环境变量 MANPATH 。要在多个位置搜索一个特定的页面,可以将 MANPATH 定义为一系列 man 页面目录:
MANPATH="/usr/man"
MANPATH="/usr/local/man:$MANPATH"
MANPATH="/usr/local/mysql/man:$MANPATH
MANPATH="$HOME/man:$MANPATH"
export MANPATH
在该示例中,首先 搜索 $HOME/man(它在最左边,或者最前面),随后是 /usr/local/mysql/man,依此类推 。顺便说一下,可以将上面的前四个命令简化为下面的语句:
MANPATH="/usr/man:/usr/local/man:
/usr/local/mysql/man:$HOME/man"
然而,将附加的目录隔离开来,将允许您快速地对条目进行重新排序,并轻松地添加新的目录 。而且,如果存在许多路径,编辑后面的 MANPATH(通过扩展 PATH)变量将变得使人乏味 。
包含文件
包含文件(或者头文件)定义了在操作系统中或特定的库中使用的常量、宏以及其他结构 。不需要重新定义一个特定的结构,您只需要将头文件“包含在您的代码(代码重用的一种简单形式)中,并按照头文件中的规范编写代码 。(man 中的第 2 部分和第 3 部分就专门用于这样的规范;例如,可以尝试 man 2 signal 。)
与 bin 和 lib 类似,include 是一个常见的目录名 。如果一个包提供了开发工具包,并且您已经将这个包安装到了它自己的根目录,那么可以在 include 子目录中找到相应的头文件 。
或者,如果您已经将包安装到了公共的 /usr/local/{bin、lib、include} 目录中,那么可以在 /usr/local/include 中根据这个包进行命名的子目录中找到包的头文件 。这是将所有的内容保存到一个公共地方的例外情况 。为什么呢?头文件的命名不是唯一的,所以将所有的内容安装到一个地方将会导致冲突,一个包有可能覆盖另一个包的头文件 。
如果您从源代码构建应用程序(您将在后面的部分中对其进行深入研究),并且头文件位于一个非标准的位置,那么您可能需要在编译器命令中添加 -I 选项 。作为一个示例,如果您的 ImageMagick 头文件位于 /opt/include/magick 中,添加 -I/opt/include/magick 作为编译器的开关 。
非常深入地了解它
即将结束今天的 Unix 旅行 。现在,您可以更容易地穿越 UNIX 的小路和背街了 。如果您迷路了,只需要说“家,家,家(不要被 猎户星座 所欺骗)或者输入 cd 即可 。请记住,您还可以使用 find 和 locate 来查找大多数文件,包括可执行文件、库和包含文件 。
下午好,女士们、先生们 。下次旅行将在 30 天后启程 。
附录 A:选择一个标准,任何标准
您的 UNIX 操作系统附带的软件位于文件系统中适当的位置(可能存储在 /bin 或者 /lib 中的),而本地添加的软件则可能位于许多不同的位置 。某些系统管理员将本地软件放在 /usr/local 中,而其他的系统管理员则使用 /opt 或者“optional,因为运行系统并不需要该软件 。而且,某些管理员会转储 /usr/local/bin 或 /opt/bin 中所有的可执行文件、/usr/local/lib 或 /opt/lib 中所有的库,等等 。

推荐阅读