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-db 软件包提供,可以快速地浏览命令来进行查看。只要简单的输入命令 man manual-page 就能显示所查命令的手册页。例如,当你想了解 cp 这个命令的所有选项时,直接在Shell控制台输入 man cp 就可以了(具体请见 sidebar 基本知识 命令行解析器 - Shell )。
手册页面不仅可以为程序编写文档,也可以为配置文件,系统调用,以及编程语言库函数等等编写。当遇到不同类型的程序拥有相同名字的情况,就会造成冲突。例如: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)               - copy files and directories
cp (1posix)          - copy files
cpio (1)             - copy files to and from archives
exec (1posix)        - execute commands and open, close, or copy file descriptors
install (1)          - copy files and set attributes
ntfscp (8)           - copy file to an NTFS volume.
并不仅仅man这个命令可以用来查看手册页面,也可以使用konquerorkonqueror (在KDE环境中) 及 yelp (在 GNOME环境中),均可实现相同功能。而用 man2html 软件包甚至能提供手册页面的web接口,允许你通过网页浏览器来浏览手册页面。使用方法是在已经安装了这个软件包的计算机上,根据 /usr/share/doc/man2html/README.Debian 的说明,浏览这个连接:
这个工具需要一个web服务器,因此你应该将其安装在一台服务器上:本地网络的所有用户将会因此受惠(包括非linux的机器),也不需要在每台工作站上面都安装http服务。如果你的服务器同时也能从外部网络访问的话,比较建议对这项服务的访问限制在本地网络的用户。
最后,但不是最重要的,您可以在 manpages.debian.org 查看所有Debian中可用的手册页面(即使还未安装到你的计算机上)。通常每个页面都有多个版本,对应不同的Debian版本。

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 这个文件记录了一些管理员可能非常关心的功能变化。(参见 第 6.7.2 节 “处理升级后的问题”)。

7.1.4. 网站

In most cases, free software programs have websites that are used to distribute it and to bring together the community of its developers and users. These sites are frequently loaded with relevant information in various forms: official documentation, FAQ (Frequently Asked Questions), mailing list archives, etc. Problems that you may encounter have often already been the subject of many questions; the FAQ or mailing list archives may have a solution for it. A good mastery of search engines will prove immensely valuable to find relevant pages quickly (by restricting the search to the Internet domain or sub-domain dedicated to the program). If the search returns too many pages or if the results do not match what you seek, you can add the keyword debian to limit results and target relevant information.
如果你不知道软件的网站地址,也仍有几种不同的方法去获知。首先,检查软件包的元信息是否含有 Homepage 的字段(命令为 aptshow 软件包名称 )。另外,软件包的描述可能也包含了一个链接到程序官方网站的地址。如果此处没有网址,可以查看 /usr/share/doc/package/copyright。Debian 的维护者通常会指出到何处去获得程序的源代码,这通常都是你需要找的网站。如果到了这个阶段你仍然找不到所需的内容,可以查找自由软件目录网站,例如 FSF 自由软件目录,或者通过 Google、DuckDuckGo 或 Yahoo 等的搜索引擎来查找你所需的内容。
You might also want to check the Debian wiki, a collaborative website where anybody, even new visitors, can make suggestions directly from their browsers. It is used equally by developers who design and specify their projects, and by users who share their knowledge by writing documents collaboratively.

7.1.5. 教程(HOWTO文档

HOWTO 是一种文档类型,采用描述具体流程和步骤的方式,以“如何做”(how to)的方式来达到预定的目的。这里所指的目标范围相对广泛,单通常是指技术方面的目标:例如,设置一个伪造IP,配置软RAID,安装Samba服务等等。这类文档通常会尽力覆盖所有在实现给定技术情况下所遇到的各种潜在问题。
Many such tutorials are managed by the Linux Documentation Project (LDP), whose website hosts all of these documents:
Debian 也为用户提供了一些教程:
All these documents should be taken with a grain of salt. They are often several years old; the information they contain is sometimes obsolete. This phenomenon is even more frequent for their translations, since updates are neither systematic nor instant after the publication of a new version of the original documents. Further many tutorials nowadays are provided by bloggers, sharing their individual solution with the interested reader. They often lack important information, i.e. the reason why some configuration has been chosen over another, or why some option has been enabled or disabled. Because blogging and creating personal websites made it so easy to share, many of these often short tutorials exist, but only a few are actively maintained and well-kept. This can make it hard to find the "right" one for you. This is all part of the joys of working in a volunteer environment and without constraints…