Product SiteDocumentation Site

第 7 章 问题的解决与相关信息的检索

7.1. 文档资源
7.1.1. 手册页面
7.1.2. info文档
7.1.3. 特定的文档
7.1.4. 网站
7.1.5. 入门指导类文档(HOWTO文档
7.2. 通常步骤
7.2.1. 配置一个程序
7.2.2. 监控后台进程在做什么
7.2.3. 通过邮件列表寻求帮助
7.2.4. 报告棘手的问题所存在的Bug
对于一名系统管理员来说,面对任何已知或者未知的情况仍然能从容面对是一种重要的技能。本章将给出一些方法,用意帮助您定位出引发问题的原因,希望能帮助你们解决问题。

7.1. 文档资源

在你能搞懂引发问题的原因之前,你需要从原理上明白程序及其所包含的子程序所扮演的角色。为此,最好的方法是参考程序的文档;但这些文档往往数量巨大且分散,因此你也需要知道如何找到这些文档。

7.1.1. 手册页面

手册页 (manual pages)通常都是文笔紧凑,包含了大量的有用信息。通过查找手册页能快速的知道命令的使用方法。只要简单的输入命令 man manual-page 就能显示所查命令的手册页。例如,当你想了解 cp 这个命令的所有选项时,直接在Shell控制台输入 man cp 就可以了(具体请见 sidebar 基本知识 命令行解析器 - Shell )。
手册页面不仅可以为命令行程序可以编写文档,也可以为配置文件,系统调用,以及C语言库函数等等编写。当遇到不同类型的程序拥有相同名字的情况,就会造成冲突。例如:shell有一个命令 read 和系统调用函数 read 重名。为此,手册页面通过添加数字参数的方式对不同种类的文档进行分类:
  1. 可从命令行执行的程序
  2. 系统调度(由内核提供的函数)
  3. 库函数(有系统库提供的函数)
  4. 设备(在Unix下,设备就是一些特殊的文件,通常放置在 /dev/ 目录下);
  5. 配置文件(格式与约定)
  6. 游戏
  7. 系统宏与标准集
  8. 系统管理命令
  9. 内核例程。
如果出现上述的冲突情况,你可以在使用手册页面查看文档的时候指定对应的分类数字(section):例如浏览系统调用read的文档时,你可以键入man 2 read。如果不指定具体的分类数字(section),系统则会从小到大获取第一个数字作为默认值。因此直接输入man shadow的时候,系统就会返回 shadow(5)的文档内容,这是在分类页面1-4都没有shadow这个命令的手册页面所导致的。
当然,如果你连命令的名字都不知道,手册页面恐怕就无能为力了。遇到这种情况,我们可以用命令 apropos 来解决,这个命令能帮你查询手册页面的功能,或者简要的描述。每个手册页面都有一个单行的描述。apropos 返回手册页面请求的关键字列表。关键字选择得恰当,就能通过此工具很快得到结果。

例 7.1. 通过apropos查找 cp命令

$apropos "copy file"
cp (1)               - 拷贝文件与目录
cpio (1)             - 从压缩包当中拷贝文件
gvfs-copy (1)        - 拷贝文件
gvfs-move (1)        - 拷贝文件
hcopy (1)            - 从HFS分卷中拷出或拷入文件
install (1)          - 拷贝文件并设置文件属性
ntfscp (8)           - 拷贝文件到NTFS分卷
并不仅仅man这个命令可以用来查看手册页面,在KDE环境中也可以使用konqueror,在GNOME当中可以用yelp命令,均可实现相同功能。而用 man2html 软件包甚至能提供手册页面的web接口,允许你通过网页浏览器来浏览手册页面。使用方法是在已经安装了这个软件包的计算机上浏览这个连接
这个工具需要一个web服务器,因此你应该将其安装包安装在一台服务器上:本地网络的所有用户将会因此受惠(包括非linux的机器),也不需要在每台工作站上面都安装http服务。如果你的服务器同时也能从外部网络访问的话,比较建议对这项服务的访问限制在本地网络的用户。

7.1.2. info文档

GNU项目为其大部分的程序编写了info格式的文档;这将解释为何很多手册页面的内容直接引用 info 文档的内容。这种格式有一定的优势,但默认的查看程序(也就是info 命令)却会使得查看文档变得复杂。更好的建议,是使用 pinfo 程序来替代默认的程序(使用 pinfo 的软件包)。
info文档拥有一个分层次的结构,如果在调用 pinfo 命令的时候没有输入任何参数,它将会列出第一层所有有效的节点。通常来说,节点名称与命令的名称相对应。
pinfo 命令可以使用键盘的上下箭头很轻易的在节点之间进行导航。另外,你们也可以使用图形界面的浏览器来查看文档,这种方式对用户更加友好。命令 konqueroryelp同样可用;而命令info2www同样提供了一个web接口。详情可访问
需要注意的是,info 系统不支持翻译功能,这点与 man 系统不一样。因此 info 总是以英文编写。然而,当你尝试用 pinfo 命令访问一个并不存在的info页面的时候,将会回退到同名的 man 页面(如果该页面存在),这时的页面有可能是被翻译了的。

7.1.3. 特定的文档

每个软件包都包含起自身的文档。即使是最缺乏文档的包也至少会包含 README 文件,里面包含了有趣并且(或者)重要的信息。这些文档通常会被安装在/usr/share/doc/package/ 目录(这里的 package 代表软件包的名字)。当文件特别巨大的情况下,这些文档不会包含在程序的主包当众,而是另外提供一个通常以 package-doc 的包名格式另外提供一个软件包。通过主包名称通常都能很快找到文档包。
/usr/share/doc/package/目录当中同样有一些由Debian包维护者补充的文档,与原版文档不同的是,增补了一些软件包的特性或改善的内容。README.Debian 文件同时也会指出相关的修改内容是为了遵守Debian的包发布政策(Debian Policy)。changelog.Debian.gz 这个文件则按照时间的顺序描述了同一功能的若干次改动间的区别:这对理解不同版本的程序的演变过程有利。最后, NEWS.Debian.gz 这个文件记录了一些管理员可能非常关心的功能变化。

7.1.4. 网站

在大部分情况下,自由软件(Free software)都拥有各自的网站,网站上面提供程序发布的地址,以及提供了开发者和用户交流的社区。这些网站通常都有以不同形式组织起来的如下一些信息:官方文档, FAQ(常见问题列表), 邮件列表和归档内容等等。通常,你所遇到的问题都已经被很多人提出过了的,这你就能在FAQ和邮件列表归档等方式找到解决的方法。同归对搜索引擎指定搜索的域名和子域名,能切实有效的提高查找问题的效率。但凡搜索引擎所返回的页面过多或者结果并非你所想要,你可以通过添加查询关键字 debian 来限制结果和目标的相关信息。
如果你不知道软件的网站地址,也仍有几种不同的方法去获知。首先,检查软件包的元信息是否含有 Homepage 的字段(命令为 apt-cache show 软件包名称 )。另外,软件包的描述可能也包含了一个链接到程序官方网站的地址。如果此处没有网址,可以查看 /usr/share/doc/package/copyright。Debian 的维护者通常会指出到何处去获得程序的源代码,这通常都是你需要找的网站。如果到了这个阶段你仍然找不到所需的内容,可以查找自由软件目录网站,例如 FSF 自由软件目录,或者通过 Google、DuckDuckGo 或 Yahoo 等的搜索引擎来查找你所需的内容。
你同样也可以通过Debian wiki来查找相关的内容,这是一种交互协作的网站,在网站上甚至普通的访问者都能直接通过浏览器提出修改建议。对该网站的使用对任何人来说都是平等的,无论是对设计和提出需求的项目开发者来说,亦或是对于通过交互协作的方式编写文档用以分享知识的用户来说。

7.1.5. 入门指导类文档(HOWTO文档

howto 是一种文档类型,采用描述具体流程和步骤的方式,以“如何做”(how to)的方式来达到预定的目的。这里所指的目标范围相对广泛,单通常是指技术方面的目标:例如,设置一个伪造IP,配置软RAID,安装Samba服务等等。这类文档通常会尽力覆盖所有在实现给定技术情况下所遇到的各种潜在问题。
许多这类的引导文档都是由Linux文档项目(LDP)进行管理,该网站保存着所有这些文档,访问地址是:
不要尽信文档所说的内容。毕竟这些东西都是年代就远了;里面包含的部分信息已经过时。由于一份新版文档的发布并非是系统的和实时的行为,这种现象同样经常会存在于翻译的文档当中。当然这其实也是一种乐趣,能让你在以志愿者的心态参与工作的同时不受约束…