本文将介绍系统管理的两个不同层次。Unix Power Tools,Shelley Powers、Jerry Peek、Tim O'Reilly 和 Mike Loukides 著,采用一种简单易读的方式介绍了系统管理的基本知识,这对于系统管理人员来说是一本必读书籍。Analytical Network and System Administration,Mark Burgess 著,向那些具有坚实的计算机科学和数学理论知识的系统管理员介绍一些高级主题。请参阅 Ted Zlatanov 的 Cultured Perl 系列专栏文章。
Unix Power Tools(UPT)第三版由 Shelley Powers、Jerry Peek、Tim O'Reilly 和 Loukides 所著,Analytical Network and System Administration(ANSA)由 Mark Burgess 所著,这两本书都是介绍系统管理方面的内容,不过它们所涉及的领域并不相同。UPT 专注于 UNIX? 方面的内容,介绍得相当详细,对于系统管理员来说是一本必不可少的读物。ANSA 则与操作系统和平台无关,它分析得非常彻底,主要满足那些具有计算机科学理论知识和几年高数知识背景的系统管理员的需要。
如果您听起来觉得 ANSA 是一本非常枯燥的书,那就对了,它的内容的确有些枯燥。UPT 是为从事系统管理工作的所有用户而编写的,包括新手和技术领袖;而 ANSA 则是为大学 3、4 年级的学生编写的一本教科书,也可以作为研究生阶段的教材。
注意,对于美国之外的读者来说,他们所学习的大学课程可能会有所不同:在美国,计算机工程和科学学位通常要经过 4 年的大学学习才能获得,然后可以继续攻读硕士和博士学位,这又需要 2 年到 6 年的时间。ANSA 可以用作大学第三年或第四年课程的教材。
虽然在这样一个通用专栏中评论 ANSA 这种书有些奇怪,但是随着本文内容的不断深入,您会看到 ANSA 并不是一本典型的教科书,对于系统管理员来说,它实际上是一个重要的里程碑,对这个领域的很多内容都进行了深入的分析。ANSA 与 UPT 之间的区别非常明显,这就是为什么我会将它们放在一起进行评论的原因。
Unix Power Tools
UPT 是一本令人恐怖的大块头的书。现在它已经出版了第三版,这只不过是随着时间的推移而更新一些内容而已。比较陈旧的内容被删除了,所剩下的都是一些有用的最新信息,可以立即应用于 UNIX 系统管理。下面只是对每部分内容的简要总结,这是因为在这样一个专栏中对一本 1,000 页左右的书进行详细总结是不可能的。
“Part I, Basic Unix Environment” 是对 UNIX 世界的一个简要介绍。这部分内容的介绍不断被一些短文打断,因此新手可能会发现很难跟上该书的进度。本书后面的简短章节都不错,但是在简介部分中,我还是比较喜欢有一个更为连续的介绍。第 1 部分介绍了 UNIX 的基础知识:文件、进程、用户和帮助系统。
“Part II, Customizing Your Environment” 非常有趣。如果您喜欢对自己的系统进行定制(希望如此),那么就可以在这部分中找到很多有趣的技巧。可以定制提示符、登录设置、终端设置等等。对于任何希望进入 UNIX 世界的用户来说,这些信息都是必须的,我保证您可以在这部分内容中找到一些新鲜的东西。
“Part III, Working with Files and Directories” 与第 4 部分是本书的核心。用来对文件和目录进行查看、搜索和操作的所有方法在这里都进行了介绍、分析和解释。这部分中也有一些短文:您可以了解一些特定的任务,例如 “在当前目录中快速查找文件”。通常,这些短文只有半页到两页篇幅,这对于介绍技巧的短文来说是最合适的长度。
“Part IV” 内容的技术性更强,它更详细介绍有关 UNIX 文件编辑方面的内容。Emacs 和 vi 是此处介绍的两个主要编辑器,还介绍了一些批量编辑和 “非彻底” 编辑的方法。有关排序的部分对于那些需要对数据进行排序的用户来说非常有用;UNIX 中基于文本的排序工具所具有的优雅、速度和灵活性足以让现代的 GUI 工具感到汗颜。
从 “Part V, Processes and the Kernel” 开始,UPT 就开始介绍一些高级的技术了。尽管这对于新手来说看起来有些恐怖(要开始接触 “内核” 这个恐怖的单词,对于不从事技术工作的新手来说,这个单词很难引起他们对技术渴望的共鸣),但是随着学习的逐渐深入,这些资料并不难理解。执行一下书中给出的例子,您将发现有些东西原来是如此简单。在后台启动一个进程,以后再对其进行控制,这会让您对 UNIX 有更好的体验。
“Part VI, Scripting” 是对高级主题的介绍。您将学习如何编写脚本,操作 shell 的历史记录,以及如何提高效率。毕竟,计算机的使命就是让我们可以更加高效地进行工作 ―― 有时人们经常忘记了这一点。与基于脚本和文本的界面相比,很多使用鼠标点击界面的现代 GUI 工具实际上妨碍了我们更好地完成工作。GUI 并不是为使用脚本进行处理而编写的(尽管有一些例外,但是 GUI 中的任何思想都体现了人的元素,即 “用户”)。“鼠标点击” 就意味着用户需要花一些时间在移动鼠标和点击鼠标上。使用脚本来执行一系列相关操作,我们就不需要再将时间花费在实现相同操作所需点击的各个按钮上了。这就是为什么这部分内容会如此重要:UNIX 的强大功能在本章中得到了充分的体现,前面所介绍的所有内容通过使用脚本融合到了一起。
正则表达式和通配符是第 6 部分中单独的两节内容。对于本书的所有内容来说,这两部分内容都非常重要,因为正则表达式是很多 UNIX 工具和所有主流 shell 中的一部分。这两节的内容非常有用,写得也非常好,欣赏并阅读它吧。
接下来是 “Part VII, Extending and Managing Your Environment”。到现在(787 页),您的眼前可能会一亮,但是这部分内容只是一些简短的技巧,而不是连贯的介绍。这部分内容还正式介绍了文件备份和归档以及 Perl、Python 的内容。Perl 和 Python 两章的内容只是根据需要进行了简单的介绍,但是至少它们可以引起大家的兴趣。
“Part VIII, Communication and Connectivity” 是大部分读者感兴趣的。尽管有关 I/O 重定向和 TCP/IP 连接的部分都非常有趣,但是对于那些尚未了解 UNIX 内核的用户来说,有关 UNIX 设备的内容则可能是太深奥难懂了。连接到 Windows? 上由专门一节进行介绍,这部分介绍非常不错,但却不够详细。现在本书所采用的模式是只对一些高级主题进行简要介绍,而不详细进行说明;详细介绍是不可能的,否则这本书早就超过 1,000 页了。我们可以考虑在这本书中了解一些基础知识,然后再从一些单独的书籍和 Web 上的教程来了解更多内容。
“Part IX, Security” 是本书最后介绍的主题。这部分内容介绍得非常详细,而且非常有用。有关 SSH 的章节尤其有用,我保证您在此处阅读的每章内容都会极大提高自己的 UNIX 知识。
Analytical Network and System Administration
Mark Burgess 由于编写了 Cfengine 而变得非常有名,Cfengine 是一个令人恐怖的系统管理工具。他撰写的书籍和文章有很多,ANSA 就是有关系统管理主题的一本非常好的教科书。
ANSA 的基本前提是,对于计算机系统的分析应该像研究物理和化学系统一样严格对待。这是一个简单的思想,但令人吃惊的是,在如今的计算机领域中却很少被提及,这个领域喜欢采用启发式(即 “教育猜想”)方法。上面所评论的 UPT 就是对系统管理员进行举例说明式教育的一个很好例子;尽管这种方法没什么错,但是任何提高都是逐渐累积的,而不像 ANSA 采用的方法那样系统化。
从第 3、4 章开始介绍傅里叶(Fourier)分析和统计起,就说明阅读本书剩下的内容需要具有大学程度的数学背景知识。到现在为止,第 1 章到第 4 章介绍了一些通用的科学方法、实验和观测,以及一些简单的系统和定义。
第 5 章介绍了有关集合、状态和逻辑的内容,解释了如何将配置映射成系统状态;对系统的修改如何映射成这些状态之间的转换。这个概念在 ANSA 中变得越来越重要,对于理解 cfengine 软件也非常有用。
第 6 章讨论了有关图的内容。尽管这看起来与计算机系统的数学分析没有太大关系,但是对于思考这些问题来说,这是非常有用的一种方法,而且也是到目前为止最好的一种方法。连通性、最大通路和最小通路以及其他图和矩阵的概念在本章中都进行了介绍。
在第 7 章和第 8 章中,进一步介绍了将系统配置作为状态进行处理的概念。重复提到的一个关键字是 “变化” ―― 在计算机系统中,没有什么东西永远是静态的(除非您将某部分拔出系统),因此应用变化对于维护系统的稳定状态是很关键的。
第 9 章讨论了有关信息的内容。本章介绍了信息流、信息的压缩和 Shannon 法则。在最大熵分布中有这些概念的一些应用,这告诉我们如何根据 Boltzmann 分布构建 “最小聚集” 网络。这种网络的单点故障较少,当然这也正是它的实践意义所在。
第 10 章介绍的是有关稳定性的内容。这在很多系统管理程序中都是一个非常重要的概念。图中的稳定域(记住系统配置可以表示成状态机图中的节点)在此处也进行了介绍。除了维护系统稳定性的方法,还介绍了随机节点删除的问题,以及系统用来防止这种情况的方法。10.10 节中的 Hurst 指数可以判定系统在伸缩时是否是稳定的 ―― 即,系统的行为是依赖于最近的事件,还是长期以来的事件。例如,这在分析 Web 服务的流量时就非常有用。
第 11 章和第 12 章介绍了资源网络和任务管理的内容。这两章中的分析所涉及的是系统的性能和响应能力。
第 13 章又离开了分析的主题,它给出了一些有关系统体系结构的定义。然后第 14 章讨论了系统的标准化,这主要是通过降低依赖性来寻找降低系统复杂性的方法。
第 15 章讨论了系统的完整性。Cfengine 的核心算法在 15.2.2 节中进行了介绍:简单地说,只要操作是可收敛且可取代的,那么 N 次执行 N 个操作就可以收敛于一个预期状态。这是 Cfengine 哲学中重要的一条法则:反复应用一些微小变化,直到系统收敛于一个稳定的预期状态为止。
在第 16 章到第 18 章中,介绍了系统维护、波动和故障方面的内容。这三章介绍了故障树、知识度(应用 Bayes 法则)和一些通用的问题:什么情况会导致故障,如何了解这些故障。
第 19 章介绍的是有关决策和策略的问题:例如,在系统管理员和攻击者之间的对抗游戏中,获胜的策略是什么?Nash 均衡是在 19.8 节中开始介绍的一种技术,然后又从计算机系统的角度详细进行了分析,并给出了几个例子。
结束语
UPT 对于任何 UNIX 用户来说都是一本好书,不管您是新手还是专家。我热切地向您推荐本书。
ANSA 对于系统管理理论来说是一本恐怖的书籍。它有很多实际应用,因为它所强调的是计算机维护和分析的理论基础。如果您对系统管理的收敛方法感兴趣,请在阅读 ANSA 之前了解一下 Cfengine 软件,这样就可以更好地理解 ANSA 的内容。
关于作者
Teodor Zlatanov 于 1999 年毕业于波士顿大学计算机工程系,获得了硕士学位。他做程序员这份工作从 1992 年就开始了,使用过 Perl、Java、C 和 C++。他的兴趣是用于文本语法分析的开放源码、3 层客户机/服务器数据库体系结构、Unix 系统管理、CORBA 和项目管理。