📄 00000016.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: ruster (尘埃*星辰*领悟), 信区: Linux <BR>标 题: 第九章 管理、维护和排错(上) <BR>发信站: BBS 水木清华站 (Thu Dec 21 13:52:00 2000) <BR> <BR>第9章 管理、维护和排错 <BR> <BR> 本章要点: <BR> <BR> 本章归纳系统管理员的日常工作任务,对于系统灾难的处理,以及如何制作更高性能 <BR>的Linux服务器。 <BR> <BR> 本章具体包括以下内容。 <BR> <BR> 系统的日常维护内容,如开关机,备份和恢复 <BR> <BR> 系统任务的调度 <BR> <BR> 对系统进行监控 <BR> <BR> 设置强大的Linux服务器 <BR> <BR> 9.1 启动和关机 <BR> <BR> 相信大家肯定都知道开关机器的步骤。与任何UNIX系统一样,Linux系统只要上电就可 <BR>以开机,关机使用shutdown命令。但是在日常维护中,开关机仍然是必须学习的内容, <BR>因为在开关机的过程中可能会有一些特殊的问题,而且你必须准备好从灾难中恢复。 <BR> <BR> 当你给系统加电的时候,Linux将自动从lilo开始执行,启动的过程我们在第四章已经 <BR>介绍过了。通常我们不需要对系统的启动作任何干预,Linux就可以自动执行启动脚本直 <BR>到出现登录提示符login:。 <BR> <BR> 本节实际是FAQ的性质,介绍一名管理员在启动和关闭系统的过程中可能碰到的问题, <BR>这些东西是非常重要的,但是在具体的发行版本中的显示信息可能和我们的情况不同, <BR>如果你理解了我们说的内容,那么它实际是很简单的。 <BR> <BR> 当/etc/rc.sysinit开始执行的时候,系统必须首先mount 上文件系统。然而如果某个 <BR>文件系统在上次关机的时候没有清洁地被卸下,那么系统将会调用fsck程序来检测根文 <BR>件系统。一般情况下,fsck会正确修复文件系统中的错误。然而,如果发生了致命错误 <BR>,那么fsck会退出,这时系统启动脚本会出现类似于这样的提示: <BR> <BR> *** An error occurred during the file system check. <BR> <BR> *** Dropping you to a shell; the system will reboot <BR> <BR> "*** when you leave the shell. <BR> <BR> 然后启动脚本会调用一个sulogin程序,这个程序会提示你输入超级用户口令: <BR> <BR> Give root password for maintenance <BR> <BR> (or type Control-D for normal startup): <BR> <BR> 输入超级用户口令之后,你将得到一个shell,在这个shell中你可以使用fsck命令修 <BR>理有问题的文件系统,关于fsck程序的细节请参考第三节。 <BR> <BR> fsck结束之后,用exit命令退出这个shell,系统将会重新启动。 <BR> <BR> 如果由于某种原因你想关闭系统(关闭系统还要理由?当然,原则上,服务器的行为 <BR>就应该是永不关机。对于Linux系统,一年不停机是正常的事情),可以使用shutdown命 <BR>令: <BR> <BR> shutdown [时间] [信息] <BR> <BR> 时间参数定义在什么时候关机,基本的格式是hh:mm,比如12:30代表12点30分。不过 <BR>更多的人喜欢用+[分钟],例如shutdown +3代表3分钟后关闭系统。一个特殊的字符串n <BR>ow表示+0,即立刻关机。信息参数用来向连接在系统上的所有用户发送一条消息,例如 <BR>,想要在两分钟后关闭系统,并且向所有用户发送一条“system now halted.Please s <BR>ave your work”的信息,命令是 <BR> <BR> shutdown +2 'system now halted,Please save your work' <BR> <BR> 如果要重新启动机器,可以使用shutdown的-r参数,例如 <BR> <BR> shutdown now –r <BR> <BR> 也可以用reboot命令: <BR> <BR> reboot <BR> <BR> 另外,在第四章我们曾经介绍过,一般的系统在/etc/inittab文件中定义了对于热启 <BR>动的组合键(Ctrl+Alt+Del)的缺省行为: <BR> <BR> ca::ctrlaltdel:/sbin/shutdown -t3 -r now <BR> <BR> -t3表示延迟三秒。因此,你可以使用这个组合键来重新启动计算机。不过要注意,对 <BR>于很多Linux系统,这个组合键必须是左Ctrl+左Alt+Del,否则无效。 <BR> <BR> 如果你不喜欢这个功能,只要在/etc/inittab中将这一行删除,并且重新启动计算机 <BR>就可以了。这样,只有超级用户才能关闭系统。 <BR> <BR> 在关闭系统的过程中,系统会在/etc目录下生成一个nologin文件,并且在系统例行任 <BR>务结束准备彻底关闭系统时删除,如果由于某种原因这个删除过程没有被正确执行,那 <BR>么在重新启动之后,除了root以外的其它用户就无法登录到系统上。如果你发现除了ro <BR>ot以外所有其它用户都不能登录系统,检查/etc目录并且删除nologin文件。 <BR> <BR> 在启动过程中,如果发生DNS失败,amd程序找不到所需要的网络资源等等情况,那么 <BR>像sendmail,httpd,amd等等程序会花费很长的时间去验证错误,系统在这过程中将失 <BR>去响应,碰到这种情况,只需耐心等待,经过一段时间后系统就会正确启动。 <BR> <BR> 在某些情况下,系统的情况会变得十分糟糕,以至于按照一般的方式启动已经不可能 <BR>。这种情况下,通常的处理方法是: <BR> <BR> 如果系统还能启动通过sysinit脚本,那么使用单用户方式启动,启动方式在第四章已 <BR>经做过介绍。 <BR> <BR> 如果lilo已经被破坏,那么用DOS软盘引导系统,并且用loadlin程序引导系统到单用 <BR>户状态,例如,你的Linux 根分区在/dev/hda1,那么执行 <BR> <BR> loadlin vmlinuz init=/sbin/init 1 root=/dev/hda1 ro <BR> <BR> 如果由于某种原因/分区已经出现问题,比如/bin和/sbin目录被破坏,那么这时唯一 <BR>的方法是从一个别的Linux系统引导,然后将/分区mount到新系统上进行处理。这可以通 <BR>过把硬盘挂到别的机器上进行,或者可以考虑制作一张小型Linux系统软盘。 <BR> <BR> 制作Linux启动软盘是一件比较复杂的事情,建议你到网上找到一个适合你的系统的启 <BR>动软盘镜像。如果你的系统实在比较特殊而没有现成的启动软盘可以使用,那么你可以 <BR>参考Linux的Boot-HOWTO。 <BR> <BR> 另外一种非常糟糕的情况是/dev中的设备项目损坏,这时所有依赖于该设备的程序都 <BR>无法工作。解决的方法是用mknod重新建立这个设备文件项目。另外,有时为了增加tty <BR>的数目或者支持多余的调制解调器,你也需要建立设备项目。 <BR> <BR> mknod的用法是: <BR> <BR> mknod [设备名] [设备类型] [主设备号] [次设备号] <BR> <BR> 设备类型是c或者b,c代表原生/字符设备,而b代表块设备。主设备号和次设备号都是 <BR>Linux核心用来标记设备类型的选项,如果要了解某个设备的设备号,可以参考核心文档 <BR>。不过,实际中的问题远远没有这样复杂,因为/dev/下的设备文件已经是相当完备的, <BR>你只要备份这个目录项目并且正确恢复就行了: <BR> <BR> # ls -l /dev/hda1 <BR> <BR> brw-rw---- 1 root disk 3, 1 May 6 1998 /dev/hda1 <BR> <BR> 显然,/dev/hda1设备的主设备号是3,次设备号是1。同样,/dev/hda2设备主设备号 <BR>是3,次设备号是2。 <BR> <BR> 一个有趣的用处是增加分区。Linux允许每个物理硬盘64个分区,不过缺省的情况下你 <BR>只能用fdisk程序分出16个,因为/dev下面只有16个hda*的项目。如果你要使用更多的分 <BR>区,那么 <BR> <BR> mknod /dev/hda17 b 3 17 <BR> <BR> mknod /dev/hda18 b 3 18 <BR> <BR> …………… <BR> <BR> 这样就可以使用更多的分区了。 <BR> <BR> 9.2 系统记录 <BR> <BR> UNIX经常被看成一个复杂而古怪的系统,不过,在系统管理员看来,它其实比许多自 <BR>称容易使用的系统更容易管理,尤其在排错的过程中,这是因为它提供了大量的运行记 <BR>录,诸如在/var/log目录下面的那些记录文件是系统管理员解决问题的第一手资料。不 <BR>幸的是,UNIX著名的前后不一致和不兼容的特点使得在/var/log下面寻找登记文件成了 <BR>系统管理员的一件新工作。我们在这一节将讨论如何分析和建立系统记录文件。 <BR> <BR> 另外一个重要的功能是对用户的各种操作记账,包括用户使用的CPU时间,进行的操作 <BR>消耗的资源等等,尽管对Linux来说对每个用户使用的CPU时间收费似乎有些不现实,但 <BR>是我们决定仍然阐述这个功能。 <BR> <BR> 9.2.1 syslog <BR> <BR> UNIX的系统记录文件隐藏在硬盘的各个地方,尽管它们理论上都应该处在硬盘的/var <BR>/log目录下,但是这个目录下的文件实在是太多了,一个一个文件地查找各种登记信息 <BR>简直是一种自虐行为。另外,尽管缺省配置已经不错,但是你可能仍然不喜欢它对于某 <BR>些信息的记录方式,或是有自己的某种要求。比如,想按照上一章说的将ipchains的记 <BR>录信息保存下来以便分析,或者类似的其他目标。所有这些都需要你了解UNIX系统记录 <BR>信息的方式。 <BR> <BR> 几乎所有的UNIX系统都使用syslogd程序进行系统记录,Linux也不例外。实际上,sy <BR>slogd程序就是一个信息过滤器,用户程序可以用它提供的openlog,syslog和closelog <BR>函数向它提供消息,而它按照系统设定的规则把这些消息分门别类,存放在各个文件里 <BR>面。如果syslogd程序没有启动,那么应用程序输出的消息就得不到处理,这种情况下, <BR>这些消息通常被直接输出到系统终端上。 <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -