当前位置:文档之家› Linux系统管理技术手册(第二版)笔记

Linux系统管理技术手册(第二版)笔记

Linux系统管理技术手册(第二版)

目录

Linux系统管理技术手册(第二版) (1)

第一部基本管理技术 (5)

第一章从何入手 (5)

1.2 Linux同UNiX的关系 (5)

1.3 历史上的Linux (6)

1.4 Linux的发行版本 (7)

1.5 表示法和印刷约定 (10)

1.6 从哪儿获得信息 (11)

1.7 如何找到和安装软件 (15)

1.8 系统管理员的基本任务 (16)

1.9 重压下的系统管理员 (18)

1.10 推荐读物 (19)

1.11 练习 (19)

第二章引导和关机 (20)

2.1 引导 (20)

2.2 引导PC (20)

2.3 引导加载程序:LILO和GRUB (20)

2.4 引导单用户模式 (20)

2.5 启动脚步 (20)

2.6 重新引导和关机 (21)

第三章超级用户的权利 (21)

3.1. 文件和进程的归属关系 (21)

3.2. 超级用户 (22)

3.3. 选择root的口令 (22)

3.4. 成为root用户 (22)

3.5. 其他的伪用户 (23)

第四章进程控制 (23)

3.1. 进程的组成部分 (23)

3.2. 进程的生命周期 (23)

3.3. 信号 (23)

3.4. KILL和KILLALL:发送信号 (23)

3.5. 进程的状态nice和renice:影响调度优先级 (23)

3.6. PS:监控进程 (23)

3.7. TOP:更好地监视进程 (23)

3.8. PROC文件系统 (23)

3.9. STRACE:追踪信号和系统调用 (23)

3.10. 失控进程 (23)

3.11. 推荐读物 (23)

第五章文件系统 (23)

第六章添加新用户 (24)

第七章增加硬盘 (24)

第八章周期性进程 (24)

第九章备份 (31)

第十章系统日志与日志文件 (45)

第十一章软件和配置管理 (45)

第二部网络管理技术 (45)

第一章TCP/IP网络217 (45)

第二章路由选择279 (46)

第三章网络硬件 (46)

第四章域名系统310 (47)

第五章网络文件系统397 (47)

第六章共享系统文件410 (48)

第七章电子邮件 (48)

第八章网络管理和调试521 (49)

第九章安全541 (49)

第十章Web主机托管和Internet服务器578 (50)

第三部其他管理技术592 (50)

第一章X窗口系统593 (50)

第二章打印608 (51)

第三章维护与环境632 (51)

第四章性能分析641 (52)

第五章同Windows协作654 (52)

第六章串行设备670 (52)

第七章驱动程序和内核691 (53)

第八章守护进程704 (53)

第九章管理政策与策略720 (54)

第一部基本管理技术

第一章从何入手

下面通过如下5种方式向读者提供帮助

●概述几种主要的系统管理系统,确定每种管理系统的不同组成部分,并且解释他们

怎样一起发挥作用;

●介绍一些通用的管理技术,我们根据经验发现这些管理技术既有效又有益;

●帮助读者选择解决方案,随着站点规模和复杂性的增加,这些解决方案仍然行之有

效;

●帮助读者从各种想法中汲取精华,剔除糟粕,并且告诉读者由版本发布者造成的各

式各样的错误;

总结一些共同的处理步骤,以使读者不必为了完成简单的任务而深究手册中的

过多细节。1.1 读者的知识背景

要求读者已经具备一定程度的Linux或者UNIX经验。尤其是在学习管理知识之前,读者应该从用户的角度对Linux的风格有一个一般性的概念,有一些优秀的书籍可以帮助读者迅速掌握这些概念,参见本章1.10节。

用户要执行的大多数管理任务都是通过编辑配置文件和编写脚本完成的,因此读者必须熟悉某种文本编辑器。我们极力推荐使用vi。

对于管理的工作的主要支柱之一是使用脚本来自动完成管理任务。要成为高效的管理人员,必须能够阅读并修改Perl和sh脚本(在Linux下实际上是bash脚本)。

对于编写新脚本,我们推荐使用Perl或者Python。作为一种编程语言,Perl有些奇怪。不过它确实包含了许多对于管理员来说是必不可少的特征。本章1.10节给出了参考书的完整信息。从https://www.doczj.com/doc/837748489.html,可以了解到有关Perl语言的所有精选软件。

许多管理员更愿意使用Python而不是Perl,而且我们也知道有些站点正在一起努力从Perl转向Python。Python是一种比Perl更精炼的语言,而且Python脚本往往可读性更好,也更容易维护。

1.2Linux同UNiX的关系

在一句话里同时用Linux和UNIX这两个称谓就仿佛一脚踏入了政治漩涡,或许也像是陷入了一大片泥潭。我们尽可能简单的描述一下。

Linux重新实现了UNIX,也丰富了UNIX。Linux遵循POSIX(可移植操作系统接口Portable Operating System Interface)标准,能够在几种硬件平台上运行,兼容现有的大多数UNIX软件。它同大多数别的UNIX变体的不同之处在于,它是自由的,开放源代码的,而且是由成百上千不同的个人和组织无私奉献协同开发出来的。Linux融入了在原来的UNiX版本中所没有的技术改进,所以它超出了克隆UNIX的范畴。从法律意义上讲,他也是一种有别于UNIX的东西,严格来说不能称之为“Unix”。

还值得一提的是,Linux不是现今世界唯一的自由UNIX版本。FreeBSD、NetBSD和OpenBSD,以及从UC Berkeley的BSD(Berkeley Software Distribution)发展而来的所有分支,都有各自的热诚追随者。虽然这些操作系统从第三方软件厂商得到的支持有点少,但他们在功能和可靠性上却往往可以和Linux相媲美

Linux 软件就是UNIX软件。多亏有了GNU(GNU软件可以自由地“使用、复制、修改和发布”)计划,使UNIX系统更富有价值的重要软件大多数都以某种开源软件代码的形势被开发出来。在Linux和非Linux系统上运行的代码是相同的。比如说,Web服务器Apache全然不在意它是在Linux上还是在HP-UX上运行的。从应用软件的立场来看,Linux只不过是得到最好的支持的UNIX变体之一罢了。

UNIX和Linux系统用于生产环境已经有许多年了。同其他大多数介绍Linux系统管理的书不同,本书着重介绍如何在一个工作环境中有效地使用Linux。

1.3历史上的Linux

Linux源自于芬兰研究生Linus Torvalds在1991年的一项个人计划。他最初构想的这个项目是要作为Minix的一个有限分支,Minix是由Andrew S。Tanenbaum编写的一种模型操作系统。但是Linux引发了世界上对它的普遍浓厚兴趣,内核很快呈现出了它自己的生命力。利用协作开发的巨大力量,Linux得以实现更富有雄心的开发进度。1.0版内核于1994年发布。现在内核稳定版是2.6

因为iLinux继承了其祖先UNIX的太多东西,所以把Linux时代的开端算做1991年并不算非常公正。UNIX的历史要追溯到几十年前的1969年,他源于当时在AT&T贝尔实验室中的一个研究项目。1976年,UNIX被无偿向大学开放,因而成了许多操作系统课程和学术研究项目的基础。

1977年,加州大学伯克利分校的计算机系统研究小组(Computer system research group,CSRG)从AT&T获得了有许可证的代码,自此成为伯克利Unix(Berkeley UNIX)的开端。伯克利的发布版本(称为BSD,代表Berkeley Software Distribution)从1977年用于PDP-11的第一个版本1BSD开始,到1993年以最高版本4.4BSD结束。

随着UNIX获得了商业上的认可,源代码许可证的价格迅速攀升。最后,伯克利制订出长期目标,要从BSD中出去AT&T(与汇编有关)的代码,这是个单调乏味而且耗时的过程。在这项工作即将完成时,伯克利失去了研究操作系统的资金支持,于是CSRG 被解散了。

在解散以前,CSRG发不了其不含AT&A代码的最终软件包,即4.4BSD-Lite。目前大多数BSD UNIX的版本(包括FreeBSD、NetBSD、Moc OS X2和OpenBSD等)都宣称

4.4BSD-Lite软件包是它的“鼻祖”。

大多数其他的流行UNIX版本(包括HP-Ux和Solaris)都是有原AT&T代码“血统”的后代。Linux并没有和AT&T或者BSD风格的UNIX共享代码,但是功能上看,Linux系统的位置则介于两者之间。

1.4Linux的发行版本

Linux不同于其他UNIX变体的原因在于,它只定义了一个操作系统内核。内核必须同命令,守护进程(daemon)以及其他软件一起打包(packaged)来组成一个可以使用的完整操作系统——用Linux的术语来说就是一个“发行版本(distrbution)”。所有的Linux发行版本共享相同的内核源,但是和内核一起的辅助材料则随着发行版本的不同而有很大不同。参考30.16节开始的内容了解关于发行版本的更多说明。

上述的“辅助材料”由过去30年里成千上万开发出的大量软件所构成。一直以来都存在有这样的争议,即把完整的操作系统简单地称为“Linux”的做法没有让那些开发人员的贡献的到承认,也没有体现出他们工作的历史延续性,这种争议还是有道理的。遗憾的是,最常被推荐采用的替代称谓“GNU/Linux”也有了它自己的历史包袱,所以只有Debian这个发行版本正式使用它。在维基百科“GNU/Linux naming controversy (GNU/Linux称谓的争议)”这个词条中列出了争执双方各自的理由。

各发行版本在侧重点,支持度和流行度方面都不仅相同。表1.1列举了最流行的通用发行版本。这些发行版本按字母顺序而不是按优先或者流行度来排列。

表1.1 最流行的通用Linux发行版本

Knoppix(https://www.doczj.com/doc/837748489.html,)是表1.1之中没有列出的一种很有用的发行版本,这个版本的Linux保存在一张可以启动的CD-ROM上。它最重要的价值在于,当某个Linux系统因为安全或者技术问题而无法启动的时候,可以用作恢复光盘使用。可启动光盘的概念得到广泛的认同,绝大多数发行版本都开始朝着这个方向转变。现今的Ubuntu就可以从发行光盘启动,Knoppix的作用变得越发不重要了。从

https://www.doczj.com/doc/837748489.html,/content/livecd.php可以找到可启动Linux发行版本的最新清单。

在过去将近十年的时间里,Red Hat公司一直是Linux界的领头羊,它的发行版本在被埋地区最有影响力。到了2003年,Red Hat Linux发行版本分裂成了两种,一种是以产生应用为中心的产品线,叫做Red Hat Enterprise Linux(简称RHEL),一种是依托Linux 社群的开发项目,叫做Fedora。在技术、经济、后勤和法律等诸多因素的综合作用下,才促成这次分裂,但时至今日,两方面的发行版本依然保持着相似性。RHEL提供大量支持,而且稳定性好,但是如果不向Red Hat公司支付许可费,则无法有效的使用它。

CentOS项目(https://www.doczj.com/doc/837748489.html,)收集了Red Hat为遵守各种许可协议(最知名的就是GNU的GPL许可证)而必须公布的源代码,把这些源代码整理成一个类似于RHEL,但是却免费的完整发行版本。这个发行版本没有Red Hat的商标,也没有个别一些专有工具,但是其他各方面都和RHEL相似。CentOS追求同RHEL在二进制乃至bug上面的全面兼容。

对于那些想要部署一个面向生产应用的发行版本,但又不想向Red Hat公司交钱的地方来说,CentOS是一种很好的选择。采用混合搭配的方式也是可行:前端服务器运行RHEL,使之获得Red Hat公司的良好支持,而后面则运行CentOS。这样的安排即照顾到让重要的基础系统获得安全保障和技术支持,又将成本和系统管理的复杂度降至最低。

Suse现在属于Novell公司,最近走上了和Red Hat一样的路子,分裂成两种相关的发行版本:openSUSE,只包含自由软件;SUSE Linux Enterprise,要花钱购买,包含正规的

支持渠道,并且多提供了一些额外的东西。以前,SUSE似乎在有意回避它有免费版本的实施,但是Novell已经比其前任更为支持SUSE的这个免费版本。现在读者可以访问https://www.doczj.com/doc/837748489.html,获得最新的信息。本书不针对那种Suse的发行版,统称为SUSE。

Debian和Ubuntu这两种发行版本都保持着支持Linux社群开发和开放访问的思想意识,所以两者读不存在任何有关自身那部分自由,那部分可以重新发布的问题。Debian在GNU社群的热情支持下生存了下来,而Ubuntu目前还在享受南非企业家Mark Shuttleworth的慈善资助。Ubuntu甚至无需读者支付邮费就可以邮寄免费的光盘。

2.1.1最好的发行版本是什么

在网上随便搜索一下,就会发现这是问得最多,答的最少的Linux问题之一。对于读者来说,正确的答案取决于你要怎样使用系统、你说熟悉的UNIX变体是什么,以及你对支持的需求。

大多数Linux发行版本能够完成你想要让Linux系统完成的所有任务。他们中的一些可能要求安装附加的软件来获得完整的功能,有些可能会让某些任务更容易完成。然而,他们之间并不会有太大不同。实际上,为是么会有那么多种不同的发行版本,且每种都宣称“易于安装”和“丰富的软件库”是其突出的特色,这本身就是一件挺奇怪的事情。于是难免会得出这样的结论,人们只不过是喜欢做出新的Linux发行版本罢了。

另一方面,既然我们在本书中所关注的是大型Linux安装的管理问题,那么我们就会侧重考虑像RHEL这样用于管理计算机网络的发行版本。有些发行版本的设计考虑到了

生产环境,其他的发行版本则没有。面向生产环境的系统所提供的额外支持功能,对于方便系统管理工作来说,带来了巨大的不同。

当用户采用了一种发行版本之后,就是在某个特定发行商的做事方式上进行了投资。不要只看到软件安装以后的功能,而是要明智地考虑到,自己的单位和那家发行商要在未来的数年里合作。因此要取得一些重要问题的答案。

●该发行版本能够在今后5年内继续存在吗?

●该发行版本会有最新的安全补丁吗?

●该发行版本会迅速发布更新软件吗?

●如果我有问题,发行商会帮助我吗?

有了这样的认识再来看,有些更有意思、规模更小的发行版本就不会太有吸引力了。另一方面,最有生命力的发行版本并不一定是最商业化的发行版本。例如,我们认为Debian并不是一家公司,既不销售任何东西,也不正式提供所需的支持。

在https://www.doczj.com/doc/837748489.html,/dist和https://www.doczj.com/doc/837748489.html,上都可以找到Linux发行版本的完整清单,其中也包括非英语的发行版本。

在本书中,我们采用5种流行的Linux发行版本作为例子:RHEL、Fedora core、SuSE linux Enterprise、Ubuntu。这些系统是企业级Linux市场的代表,他们合起来占据了如

今在大型站点中投入使用的Linux的大部分。

2.1.2特定于发行版本的系统管理工具

许多发行版本提供了可视化的工具(比如Red Hat的Network Administration Tool或者SUSE的YaST2),帮助用户配置或者管理选定的系统功能。这些工具非常有用,特别是对于管理员新手来说更是如此,但是他们倾向于掩盖用户在进行改动时实际发生的

细节。在本书中,出于下述原因,我们要介绍可视化工具调用的底层机制,而不是工具本身。

第一,可视化工具趋于专有化,或者至少是趋于为发行版本所特有,他们给配置过程带来了变数,而在各个发行版本之间,这些过程在较低层面上实际上可能是相当一致的。第二,我们相信,对于系统管理员来说准确了解他们系统是如何工作的非常重要。当系统发生故障的时候,可视化工具通常对于确定并修正问题来说没有什么帮助。最后,手工配置往往更好、更快、更灵活、更可靠,而且更易于脚本实现。

1.5表示法和印刷约定

在本书中,文件名、命令和命令的参数用粗体(黑体)来表示;占位(例如,不应该按字面直接照搬的命令参数)用斜体来表示。例如,在下面的命令中:

cp file directory

用户应该用实际的文件名和实际目录来分别替换file和directory。

配置文件和终端会话的节录用等宽字体来显示。有时候,我们用斜体字来给交换式会话做注释,例如:

$grep Bob /pub/phonelist/*查找Bob的电话号码*/

在这些特定情况以外,我们试图把特殊字符和格式约定减到最少,只要我们这样做不会影响理解即可。例如,我们经常会提到的一些词条,比如叫做daemon的Linux组和打印机anchor-lw等,根本不采用特殊格式。

一般说来,我们实用的约定与联机用户手册中用来表示命令的语法相同:

●中括号(“[”和“]”)之间的任何内容都是可选的;

●英文省略(“…”)后面的任何内容都是可以重复的;

●大括号(“{”和“}”)表示应该选择由竖线(“|”)隔开的各项中的一个。

例如,规则:

bork [=x] {on | off} filename …

可以匹配下面任何一条命令:

bork on /etc/passwd

bork -x off /etc/passwd /etc/termcap

bork off /usr/lib/tmac

我们将shell风格的特殊字符用于模式匹配:

●星号(*)匹配零个或多个字符;

●问号(?)匹配一个字符;

●中波浪线(~)表示当前用户的主目录(home);

●~user表示user用户的主目录。

例如,我们会采用速记模式/etc/rc*.d来指代Debian的启动脚本目录/etc/rc0.d、

/etc/rc1.d等。

引号中的文本经常具有确切的技术含义。在一些情况下,我们忽略英语的一般规则,把标点符号放在引号外边,以使读者不会对什么包括而什么不包括在引号中产生混淆。

1.6从哪儿获得信息

Linux的文档分布在一系列资源中,读者会发现其中有些已经安装到了自己的系统中,而有些还留在网上。较大的资源有:

●手册页(man页),用命令man阅读;

●Texinfo文档,用命令info阅读;

●HOWTO,就各种不同主题发表的简短说明;

●Guide,就各种不同主题发表的较长论述;

●特定与发行版本的文档;

●同特定的软件项目有关的Web网页。

Man手册页和Texinfo文档构成了传统的“联机”文档(当然,所有的文档都以这样或者那样的形式在线存在)。这些文档一般伴随系统一起安装,针对特定程序的man 手册页通常随着新软件包一同安装。

Man手册页对单条命令、驱动程序、文件格式或者库例程做简洁的描述。他们不会解释诸如“我该怎样安装一个新设备?”或者“为什么我们的系统这么慢?”这样较为普通的话题。对于这些问题来说,用户必须参考HOWTO。

Texinfo文档是在很久以前由GNU人士发明的,针对的是设定man页面格式的nroff 命令为AT&T专有这一现实情况。现在,我们已经有了GNU的groff来为我们完成这项工作,nroff的问题不再重要了。遗憾的是,许多GNU软件包坚持用Texinfo文件而不是man页面来提供自身的文档。Texinfo除了为文档规定了不必要的标准之外,其自身也表现为一种相当错综复杂的超文本系统。

HOWTO和guide是由Linux建档计划(Linux Documentation Project,LDP)维护的。LDP 是所有各类Linux有用信息的中心知识库。它也集中力量将Linux的相关文档翻译成其他语言。

特别针对系统管理而言,一些免费的在线LDP guide有:Lars Wirzenius、Joanna Oja、Stephen Stafford和Alex Weeks编写的The Linux System Administrators’Guide;Mendel cooper编写的The Advanced Bash-Scripting Guide;Olaf Kirch和Terry Dawson编写的The Linux Network Administrator’s Guide,Second Edition;以及Steve Frampton编写的Linux System Administration Made Easy。

遗憾的是,许多LDP文档现在并没有得到持续维护。因为Linux的时间概念相对于真实的时间来说要短得多,被忽略掉的文档容易很快过时。一定要查看HOWTO或者guide 上的时间戳,并据此估计它的可信度。

Linux基本软件中最重要的部分里有许多是由中立的第三方来维护的,比如Internet 软件联盟(Internet Software Consortium)和Apache软件基金会(Apache Software Foundation)。这些组织一般为他们所发布的软件包提供充足的文档。发行版本有时包含了软件,但却给文档打了折扣,于是,到软件原本的发源地看看有没有更多的材料常常会有所帮助。

有关许多Linux软件包设计原理的另一种有用信息源是“RFC(Request for Comments,请求评议)”系列文档,他们描述了在Internet上使用的协议和过程。参考第12章了解更多的信息。

2.1.1手册页的组织

Linux的手册页一般分为9节,如表1.2所示。

表1.2 Linux手册的各节及其内容

手册页中有些节会做进一步细分。例如:第3M节经常包含了有关系统中数学库的手册页。地6节和第9节一般是没有内容的。很多系统在手册中都有一个称之为1的节,用于本地手册页。另外一个惯用的约定是把第“n”节作为特定于软件的子命令(例如bash的内建命令)。

手册页的nroff输入通常保存在/usr/share/man/manX目录中,X是1~9的数字,或者是字母1或n。正常情况下,页面会以gzip压缩,以节省空间(命令man知道如何当场将他们解压缩)。手册的格式化版本保存在/var/cache/man/catX目录中。命令man会随需要确定手册页格式;如果cat目录可写,那么man也将在创建格式化页面的同时,把经过格式化的页面存放到cat目录中去,从而生成一个常读手册页的高速缓存。

命令man实际上会在若干不同的目录中寻找用户需要的手册页。用户可以使用manpath命令来确定搜索路径。这个搜索路径(在Fedora中)一般为:

$manpath

/usr/Kerberos/man;/usr/local/share/man;/usr/share/man/en;/usr/share/man

如果有必要,用户可以设置自己的环境变量MANPATH来覆盖默认路径。用户也可以在/etc/man.config(RHEL和Fedora)或者/etc/manpath.config(SUSE,Debian和Ubuntu)中设置系统的默认搜索路径。

2.1.2Man:读取手册页

Man title命令格式化特定的手册页并通过less命令(或者在PAGER环境变量中指定的任何程序)把手册页发送到用户终端。Title通常是一个命令、设备或文件名。手册中的各节大致是按照数字顺序进行搜索的,不过通常首先搜索描述命令的那些节(第1、8和6节)。

命令格式man section title可让用户从么个特定的节获取手册页。于是,man tty 命令可得到tty命令的手册页,man 4 tty命令可得到针对控制终端驱动程序的手册页。

Man -k keyword输出一份手册页清单,在其单行概要中有keyword。例如:$man -k transalate

2.1.3其他的Linux信息资源

在世界上有一个巨大的Linux爱好者群体。我们不可能说出每一处有用的Linux信息资源,或只是主要的资源,但是在表1.3中给出了几个很重要的信息资源。

不要羞于访问普通的UNIX资源——大多数信息都能直接用于Linux。在网上可以获得有关系统管理的丰富信息,形式非常多样。例如,用户可以再任何流行的搜索引擎,比如Google、Yahoo!或者Ask中键入系统管理方面的问题。在第30章中可以找到一份其他“入门”资源的清单。

表1.3 web上的Linux资源

许多站点直接迎合了系统管理员的需要。下面是我们特别喜爱的几个站点:

●https://www.doczj.com/doc/837748489.html,——UNIX Guru Universe(UNIX高手世界),有许多系统管理的资料;

●https://www.doczj.com/doc/837748489.html,——系统管理员资源链接的好集合;

●https://www.doczj.com/doc/837748489.html,——Windows和Mac软件,按质量进行了筛选;

●https://www.doczj.com/doc/837748489.html,——“计算机迷”的新闻“集散地”;

●https://www.doczj.com/doc/837748489.html,——Perl脚本和库的中心资源库;

●https://www.doczj.com/doc/837748489.html,——安全信息,巨大而且可以搜索的安全漏洞数据库。

另一个有趣且有用的资源是Bruce Hamilton的“Rosetta Stone”网页,地址为

https://www.doczj.com/doc/837748489.html,/rosetta.html。它提供了在许多不同成都操作系统上执行各种系统管

理任务所使用的命令和工具的指导。

1.7如何找到和安装软件

大多数Linux发行版本把它们的软件分成可以彼此独立安装的软件包。当用户在一台新的计算机上安装Linux的时候,一般要选择一定范围的“起步”软件包,把它们复制到新的系统上。

这种体系简化了系统配置许多方面的工作,也是Linux优于UNIX传统版本的关键点之一。遗憾的是,这种设计也使得写书介绍这些发行版本的任务复杂了,因为总是不能确切地搞清楚那些软件是某个给定发行版本的“一部分”。如果一个软件包在安装光盘中,但又不是默认安装的一部分,他还算是该发行版本里的软件包吗?如果它只在发行版本的超级版“奉送”光盘上才有,那么它算是该发行版本里的软件包吗?

在本书中,我们一般介绍每个所举例子的发行版本的默认安装。当我们说某个特殊软件包没有包含在默认安装里的时候,并不一定意味着该软件包不会出现在读者的系统上,或者读者的发行版本不支持它。下面就讲一下,如果读者有该软件,如何它找出来,如果读者没有该软件,那么怎样得到它。

首先,使用shell的which命令来找出相关命令是否已经在搜索路径中。例如,下面

的命令揭示出GNU的C编译器已经安装在了本机的/usr/bin目录下:

$which gcc

/usr/bin/gcc

如果which没有找到要找的命令,那么试试whereis,该命令搜索更大范围的系统目录,和shell的搜索路径无关。还要注意,有些系统上的which命令不显示用户没有执

行权限的文件。例如:

$ which ipppd

/usr/bin/which: no ipppd in

(/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/us

r/bin:/usr/X11R6/bin:/root/bin:/usr/local/mysql/bin:/root/bin:/usr/local/libnet/bin:/root/bi n:/usr/local/net-snmp/bin:/usr/local/php5/bin/:/home/ssh-user/bin)

$ whereis ipppd

ipppd: /sbin/ipppd /usr/sbin/ipppd /usr/share/man/man8/ipppd.8.gz

另一种方法是采取作用非凡的locate命令,它考察预先编译好的一个文件系统索引,以此确定与特定模式相匹配的文件名。它搜索的并不特定与命令或者软件包,而是能够找到任何类型的文件。例如,如果读者不能确定在哪儿能找到头文件shignal.h(它是Linux 信号定义的正式代码),可以试试;

$locate signal.h

Locate的数据库通常由updatedb命令在每天晚上重新生产,这条命令由cron来运行。因此,执行一次locate的结果不是总能够反映出文件系统的新近的变化。

如果用户知道正在找的软件包的名字,那么也可以使用系统上的软件包工具来直接

检查是否又该软件包出现。例如,在Red Hat、Fedora或者SUSE系统上,下面的命令可以检查是否有Python脚本语言:

rpm –q python

参考第11章,了解有关在我们举例的系统中软件打包命令的更多信息。

如果感兴趣的软件包似乎还没有安装,那么找他的第一个地方就是所有发行版本的自动软件包管理系统。每一种发行版本都支持某种形式基于Internet的升级旧软件包和查找新软件包的系统。最常见的系统有yum和APT,这两种系统将在本书的11.4节介绍。

例如,在使用APT的Debian系统上,就可以用下面的命令获得并安装最新版的Python:

#apt-get install python

大多数Linux软件是由独立的小组开发,这些小组以源代码的形式发布软件。接着,Linux发行商收集源代码,按照特定系统上采用的规范来编译,并将二进制编译结果打包。安装特定与发行版本的二进制软件包通常要比取得并编译原来的源代码更简易。但是,发行商提供的软件有时候要比当前的版本落后一两个版本。

两个发行商使用相同的软件打包系统不一定意味着两个系统的软件包能够互换使用。例如,RedHat和SUSE都使用RPM,但是他们的文件系统布局有点儿不一样。如果能得到针对于你的特殊发行版本而设计的软件包,那么就用它,这始终是最好的做法。

如果其他方式没有找到,那么试试在一个下载站点上查找该软件包,或者用该软件包的名字在Google上搜一下。

1.8系统管理员的基本任务

下面各小节简要介绍了一般要求系统管理员履行的若干工作。这些职责未必是由一个人来执行的,在许多地方,这项工作会分配给几个人。不过,确实至少需要一个懂得全部工作,并确保有人正在做这些工作。

2.1.1增加、删除以及管理用户账号

系统管理员负责为新用户增设账号,将不再活动的用户账号删除。增删用户的处理过程可以自动进行,但在增设新用户之前,仍然必须做出某些管理决定(把用户的主目录放在什么位置,那些机器上创建账号等)。参考第6章了解有关添加新用户的更多知识

当某个用户不应该再访问系统时,必须禁用该用户的账号。由该帐号拥有的所有文件必须备份到磁带上并保存起来,以使系统不会随着时间的增长,积累不想要的信息。

2.1.2增删硬件

购买了新硬件或把硬件从一台机器移到另外一台机器上时,必须配置系统,使之识别并使用改硬件。硬件支持的任务可能很简单,例如添加打印机,也可能是复杂的多的任务,例如添加磁盘阵列。参考第七章、第28章和第23章了解有关这些专题的更多知识。

2.1.3执行备份

执行备份可能是系统管理员最重要的工作了,这也是经常被忽视或者不经心去做的工作。备份工作耗时且单调,但又绝对必要。备份可以自动进行并授权给下属去做,但系统管理员仍然要确保备份工作在按计划正确进行(备份产生的介质真的可以用来恢复文件)。参考第9章了解有关备份的更多知识。

2.1.4安装和更新软件

当获得新软件时,必须安装并测试它,并且经常在几种类型的操作系统和硬件下进行安装和测试。一旦软件能够正常工作,就必须通知用户可以用它,以及它的位置。在补丁和安全升级被发布出来的同时,也必须平稳地将她们融入到本地环境里。

本地软件应该安装到合适的位置,让用户能容易地把它同系统软件区分开来。采用这样的方式可以简化升级操作系统的任务,因为本地软件将不会被升级过程所覆盖。参考第11章了解有关软件管理的更多知识。

2.1.5监控系统

大型设备需要时刻监控。日常的监视活动包括确保电子邮件和Web服务正常工作、查看日志文件在掌握故障的早期迹象、确保本地网络都连接正确,并监控系统资源(例如磁盘空间)的可用性。

2.1.6故障诊断

Linux系统和运行他们的硬件系统偶尔会发生故障。充当技工来诊断故障以及在必要时请来专家排除故障等就成了管理员的工作职责。找出问题往往比修复更为困难。

2.1.7维护本地文档

系统为合适单位的需要而逐渐改造,随着改造的进行该系统便开始不同于文档当初所描述的那个基本系统了。给整个系统特定于本地环境的各方面建立文档是管理员的职责。这项职责包括为新安装的,但又不是伴随操作系统而来的任何软件编写文档,把电缆的走线位置以及电缆连接方式等信息编写成文档,维护所有硬件维护记录,记录备份状态,编写本地处理过程和策略的文档等。参考30.8节了解相关文档的建议。

2.1.8时刻警惕系统安全

系统管理员必须实施某种安全策略并定期检查,以确保系统安全没有受到侵害。在安全要求低的系统上,这项工作任务可能仅仅包括对非授权访问进行粗略的检查。在安全要求高的系统上,这可能包括仔细布置陷阱和审计程序的监视网。有关安全主题的更详细信息,请参见第20章。

2.1.9帮助用户

尽管帮助用户解决各种问题很少包括在系统管理员工作的规定范围之内,但这通常占据了多数系统管理员日常工作的很大一部分。系统管理员往往遇到从“我的程序昨天正常工作了,今天却不干活了!你改变了什么?”到“我把咖啡洒在键盘上了!”等形

形色色的问题的狂轰滥炸。

1.9重压下的系统管理员

系统管理员通常有多种身份。在现实生活中,系统管理员经常从事其他工作,但同时又被请来管理身边的一些计算机。如果你是处于这种情况,那么也许想要考虑一下这种兼职最终可能出现的情况。

你对你的系统懂的越多,那么用户群体对你的依赖就越多。网络规模总是在增长,你可能不得不花费更多的时间在系统管理上。很快,你就会发现在你所在的机构中,你成了唯一懂得这样去执行各种重要任务的人。

一旦同事们开始把你看作是本地系统的管理员,那时要把自己从这种角色中解救出来就很困难了。我们知道有几个人为了逃避这种状况已经改变了自己的工作。由于许多管理任务是无形中的,你可能发现自己所在的单位希望你即成为一名全职的系统管理员,同时也成为全职的工程师、作家或秘书。

有些不乐意这样做的系统管理员通过不好的态度和服务来摆脱这类要求,我们不推

荐这种方法。这种方法有损自己的形象,并且可能产生更多问题。

相反,我们建议你把花费在系统管理上的时间用文档的形势写出来,你的目标应该是保持其工作处于可以管理的水平,而且应该搜集让你在申请减轻管理任务时用得上的证据。在大多数单位里,你需要游说管理层半年到一年的时间以后,才可能让自己的管理员位置由别人来取代,因此应该提前计划好。

另一方面,你可能发现自己喜欢系统管理员的工作,并希望成为全职的系统管理员,那么找到一份工作将不会有什么问题。请参考第30章,以预先了解可能出现的一些“恐怖”问题。

系统管理员人格综合症

作为系统管理员,由于其工作而导致的不幸却常见的临床症状是“系统管理员人格综合症”。

有许多医疗方法可以用来治愈这些不幸的症状。最有效的是培养良好的幽默感和营造一个小而丰富的办公室酒窖。还可以考虑更具思考意味的方法:任何时候,当有人在你傍边说“服务器是不是又死机了?”时,让自己静静地向远处眺望,并同时敲击自己的脚后跟。如果所有别的治疗方法都不管用,那么就休假吧。

1.10推荐读物

在出版领域中针对系统管理最好的资源(除去本书外)就是O’Reilly公司的系列图书。这个系列的图书从20年前的Unix in a Nutshell开始,到现在已经给每个重要的Unix和Linux子系统以及命令都单独除了书。这个系列还包括有关Internet、Windows和其他非Unix专题的图书。所有这些书都价廉物美、内容及时而且针对性强。Tim O’Reilly对开源代码运动相当有兴趣,为此专门搞了一个OSCON大会,而且还为其他的一些技术潮流搞了大会。OSCON每年召开两次,美国一次,欧洲一次。

虽然市场上有许多介绍性的Linux书籍,但是尚未发现值得我们毫无保留地给于推荐的书。一般而言,读者最好找到UNIX的“经典著作”。你读到的几乎每样东西都能等同地用到Linux上。

Linux in a Nutshell、Learning the vi Editor、Unix power tools、Programming perl、Linux and the Unix Philosophy、The Daemon,the GNU & the Penguin

1.11练习

第17页

第二章引导和关机

引导

自动引导和手工引导

引导过程的步骤

初始化内核

配置硬件

内核线程

操作员干预(仅限手工引导)

执行启动脚步

多用户运行

引导PC

引导加载程序:LILO和GRUB GRUB:全面统一的引导加载程序

LILO:传统的Linux引导加载程序

内核选项

PC上的多重引导

GRUB的多重引导配置

LILO的多重引导配置

引导单用户模式

用GRUB引导单用户模式

用LILO引导单用户模式

启动脚步

Init和运行级

RedHat和Fedora的启动脚本

SUSE的启动脚本

Debian和Ubuntu的启动脚本

相关主题
文本预览
相关文档 最新文档