1、Linux操作系统实用教程第9章 Linux系统管理 9.1 打印机管理 9.2 进程管理 9.3 Linux服务配置 第9章 Linux系统管理本章概述本章概述所谓系统管理,就是在特定地环境下对操作系统所拥有的资源进行有效的计划、组织和控制,以便实现既定目标的过程。合理地对Linux操作系统进行管理,可以对系统运行情况进行监控,提高系统的工作效率,还可以增加系统的安全性。9.1 打印机管理 9.1.1 Linux打印系统简统简介在Red Hat Linux 9中包含了CUPS和LPRng两种打印系统。默认情况下使用CUPS打印系统,如果操作系统是从使用LPRng打印系统的RedHat Lin
2、ux中升级而来,则默认仍然使用LPRng。本节主要介绍CUPS打印系统本地打印机和网络打印机的使用。关于LPRng打印系统的使用,读者可自行学习。9.1.1 Linux打印系统简统简介1CUPS打印系统统通用Unix打印系统(Common Unix Printing Systme,CUPS)是RedHat Linux 9默认支持的打印系统。该系统主要使用Internet打印协议(Internet Printing Protocol,IPP)来管理打印工作及其队列,同时也支持LPD(Line Printer Daemon)、SMB(Server Message Block)以及AppSocket
3、等通信协议。CUPS具有如下的优点:9.1 打印机管理 9.1.1 Linux打印系统简统简介 采用IPP协议加强网络打印功能。可自动检测网络打印机。支持Web界面设置工具。支持PPD(PostScript Printer Description)打印机文件。支持大多数的打印机使用。2LPRng打印系统统LPRng打印系统是由Berkeley LPR打印系统发展而来的,兼容RFC 1179标准。其主要功能如下:在不需数据库的环境下可执行lpr、lpc和lprm等程序。实现打印队列的自动转向。9.1 打印机管理 9.1.1 Linux打印系统简统简介 实现打印工作自动保留。多重打印机可使用同一个
4、队列。客户端不需要执行suid root。大幅提升安全性检查。改善权限及授权机制。3.切换换打印系统统RedHat Linux 9同时支持上述的两种打印系统,如果当前安装了CUPS和LPRng两种打印系统,可以使用如下的方法切换当前使用的打印系统。9.1 打印机管理 9.1.1 Linux打印系统简统简介单击“主菜单”“系统设置”“更多系统设置”“Printer System Switcher”菜单项,或在终端提示符下输入命令“redhat-switch-printer”,此时系统打开如下图所示的“redhat switch printer”窗口。“redhat switch printer”
5、窗口9.1 打印机管理 9.1.1 Linux打印系统简统简介在该窗口中选择需要使用的打印系统,如要选择CUPS打印系统,只需选中前面的单选按钮,然后单击“确定”按钮即可。接着,需要停止lpd服务,启动cups。在终端提示符下使用如下命令,可完成该动作:rootmyhost root#/etc/rc.d/init.d/lpd stop 停止lpd服务rootmyhost root#/etc/rc.d/init.d/cups start启动cups服务结果如下图所示。启动cups9.1 打印机管理 9.1.2 添加本地打印机9.1.2 添加本地打印机本地打印机是任何操作系统打印机管理的常见类型。
6、所谓本地打印机就是通过并行端口或USB连接端口,直接连接到主机的打印机。在添加本地打印机时需要以超级用户身份登录系统。具体步骤如下:(1)单击“主菜单”“系统设置”“Printing”菜单项,或在终端提示符下输入命令“redhat-config-printer”,即可打开如下图所示的“打印机配置”窗口。“打印机配置”窗口9.1 打印机管理 9.1.2 添加本地打印机(2)单击“行动”“新队列”菜单项,或单击“新建”按钮,即可弹出“添加一个新打印队列”对话框,单击“前进”按钮跳过,系统出现如下图所示的“队列名称”对话框。“队列名称”窗口9.1 打印机管理 9.1.2 添加本地打印机(3)在“名称
7、”文本框中输入打印机名称,在“简短描述”文本框中输入有关该打印机的说明后,单击“前进”按钮,弹出如下图所示的“队列类型”对话框。注意:打印机的名称字符串中不能出现空格,而且必须以英文字母打头,可以包含数字、连字符号(-)或下划线(_)。“队列类型”窗口9.1 打印机管理 9.1.2 添加本地打印机(4)在“选择队列类型”下拉列表中选择“本地连接”,然后单击“定制设备”按钮,弹出如下图所示的“定制设备”对话框。“定制设备”对话框9.1 打印机管理 9.1.2 添加本地打印机(5)若是从USB接口接入打印机,在“设备”文本框中应输入/dev/usb/lp0,然后单击“确定”按钮,返回“队列类型”窗
8、口。选中“/dev/usb/lp0”所在的行,单击“前进”按钮,弹出如下图所示的“打印机型号”对话框。“打印机型号”对话框9.1 打印机管理 9.1.2 添加本地打印机(6)选择合适的打印机品牌和型号后,单击“前进”按钮,进入如下图所示的“结束”对话框。“结束”对话框9.1 打印机管理 9.1.2 添加本地打印机(7)单击“应用”按钮,弹出如下图所示的打印测试页窗口,完成本地打印机的添加。印测试页9.1 打印机管理 9.1.3 安装打印机驱动驱动9.1.3 安装打印机驱动驱动RedHat Linux 9系统默认支持当前大多数知名品牌的打印机,如果需要向系统添加未被RedHat Linux 9支
9、持的打印机,需要自行安装相应的驱动程序。通常可以在打印机生产商的官方站点上找到相应的Linux驱动,也可以从其他网站上下载第三方的驱动。在添加本地打印机的过程中的“打印机类型”步骤中,如果系统没有提供相应的打印机型号,此时就需要用户自行安装驱动了。下面以惠普的USB接口接入的HP LaserJet 1020打印机为例介绍打印机驱动的安装方法。从http:/ 打印机管理 9.1.3 安装打印机驱动驱动rootmyhost root#cd/tmprootmyhost tmp#tar zxvf foo2zjs.tar.gzrootmyhost tmp#cd foo2zjsrootmyhost foo
10、2zjs#make uninstall 卸载先前安装的残余组建rootmyhost foo2zjs#make 编译rootmyhost foo2zjs#./getweb 1020 获取打印机固件支持,测试需要将打印机连接到主机,并且打开电源rootmyhost foo2zjs#make install 安装编译后的组建rootmyhost foo2zjs#make install-hotplug 安装hp特有的热插拔支持组建rootmyhost foo2zjs#make cups 添加对CUPS的支持,并重启CUPSrootmyhost foo2zjs#make test 打印测试页9.1 打
11、印机管理 9.1.4 添加CUPS打印系统统9.1.4 添加CUPS打印系统统如果本机没有连接打印机,Linux允许通过TCP/IP网络,使用CUPS系统上的打印机。可以利用RedHat Linux 9提供的打印机配置工具添加CUPS的远程打印机,具体步骤如下。(1)以超级用户登录RedHat Linux 9系统,打开“打印机配置”窗口,单击“新建”按钮,在弹出的“队列名称”窗口中,输入唯一的打印机名,在打印机描述后,单击“前进”按钮,弹出如下图所示的“队列类型”窗口。9.1 打印机管理 9.1.4 添加CUPS打印系统统(2)在“选择队列类型”下拉列表中选择“联网的CUPS(ipp)”选项,
12、并在“服务器”文本框中输入提供打印服务的主机的地址,“路径”文本框中输入适当的队列缓存文件位置,然后单击“前进”按钮。(3)在弹出的“打印机型号”窗口中选择合适的打印机品牌和信号后,单击“前进”按钮,进入如下图所示的“结束”窗口。完成CUPS打印机添加9.1 打印机管理 9.1.4 添加CUPS打印系统统(4)单击“应用”按钮,完成CUPS打印机的添加。返回如下图所示的“打印机配置”窗口,此时就可以看到新添的CUPS打印机了。查看新添打印机9.1 打印机管理 9.1.5 Web方式管理打印机9.1.5 Web方式管理打印机如果Linux系统选用CUPS打印系统,在启动CUPS后,就能够使用We
13、b方式来管理打印系统。首先打开Molliza浏览器,在地址栏中输入http:/localhost:631,系统会打开如下图所示的CUPS打印系统管理页面。Web打印管理首页9.1 打印机管理 9.1.5 Web方式管理打印机在CUPS打印系统的管理首页中,包含了以下管理项目。(1)Do Administration Tasks:包含了几乎所有的管理项目,例如打印机类、打印任务队列管理和打印机管理等。(2)Manage Printer Classes:管理打印机类。(3)On-Line Help:在线帮助。(4)Manage Jobs:管理打印队列。(5)Manage Printers:打印机管
14、理。(6)Download the Current CUPS Software:连接到CUPS首页。利用首页上的“Manager Printer”项目可以添加打印机,具体步骤如下:9.1 打印机管理 9.1.5 Web方式管理打印机单击“Manage Printers”项目,跳转到如下图所示的页面。如果当前系统没有连接打印机,此时会显示“No printers”。系统当前的打印机状态9.1 打印机管理 9.1.5 Web方式管理打印机单击“Add Printer”按钮,此时系统弹出身份认证窗口,如下图所示,要求输入用户名和密码。身份认证窗口9.1 打印机管理 9.1.5 Web方式管理打印机输
15、入合法的用户账号和口令后,单击“确定”按钮后,进入如下图所示的“Add New Printer”页面。“Add New Printer”页面9.1 打印机管理 9.1.5 Web方式管理打印机在该页面中输入打印机名称、打印机的设备名称和简要的说明后,单击“Continue”按钮,进入如下图所示的选择打印机接口页面。选择打印机接口页面9.1 打印机管理 9.1.5 Web方式管理打印机在“Device”下拉列表中选择当前接入主机的打印机的接口类型,由于本机采用的USB连接打印机,故选择“USB Printer#”,然后单击“Continue”按钮,进入如下图所示的选择打印机厂商页面。选择打印机厂
16、商页面9.1 打印机管理 9.1.5 Web方式管理打印机在“make”列表中选择正确的打印机厂商,由于本例使用的惠普的Laser Jet系列打印机,故选择“HP”,然后单击“Continue”按钮,转入“选择打印机型号”窗口。在其中选择正确的打印机后,单击“Continue”按钮,弹出如下图所示的添加打印机完成页面。添加打印机完成页面9.1 打印机管理 9.1.5 Web方式管理打印机添加打印机操作完成后,单击“Printers”连接,弹出如下图所示的打印机管理页面中,可以查看当前新增的打印机。查看新增打印机9.2 进程管理 9.2.1 监监控进进程状态状态进程是具有一定独立功能的程序的一次
17、执行,是操作系统动态执行的基本单元,也是操作系统进行资源分配的基本单位。Red Hat Linux 9是一个多任务的操作系统,通过CPU在各个任务之间进行时间片轮转来实现宏观上多个任务的同时执行的。9.2.1 监监控进进程状态状态Linux系统是一个多用户多任务的操作系统,管理员在使用和管理Linux系统的时候,需要随时了解系统进程运行的情况,也经常需要对正在运行的进程进行及时的调整和管理。而进行进程管理的首要条件就是获知当前系统正在运行的进程状态。在RedHat Linux 9系统中,除了在第三章中介绍的基于命令行的ps和tree工具外,还提供了基于图形界面的“系统监视器”工具,用于查看系统
18、当前进程的运行状况。9.2 进程管理 9.2.1 监监控进进程状态状态在GNOME桌面中,单击“主菜单”“系统工具”“系统监视器”菜单项,或在终端提示符中输入命令“gnome-system-monitor”,即可以打开如下图所示的“系统监视器”窗口。“系统监视器”窗口9.2 进程管理 9.2.1 监监控进进程状态状态单击“查看”下拉列表,可以选择显示所有进程、当前用户的进程还是活动的进程。单击“编辑”“首选项”菜单项,可以打开如右图所示的“首选项”对话框。选择“进程域”选项卡,从中可以选择主界面中显示的进程信息。“首选项”对话框9.2 进程管理 9.2.2 控制进进程的优优先级级9.2.2 控
19、制进进程的优优先级级在Linux中,按照时间片轮转法分配进程对CPU的使用时间,当一个进程使用完获得的CPU时间片后,就将其占用的处理机释放给其他进程。操作系统赋予各进程不同的优先级,操作系统按照进程的优先级来安排其占用CPU顺序,优先级越高的进程越先获得CPU的使用权,并且CPU的使用时间也越多,进程就越快完成定义的任务。一般进程的执行时的优先级范围为-2019,其中-20的优先级最高,而19的优先级最低。优先级-1-20只有管理员才可以设置,一个程序被启动时,系统设置的默认优先级是0。用户可以使用相应的工具来设置进程的优先等级。在RedHat Linux 9中,提供了基于命令的工具nice
20、和renice,以及图形工具系统监视器来调整进程的优先等级。9.2 进程管理 9.2.2 控制进进程的优优先级级1.nice和renice工具nice和renice命令可以用于在命令行方式下设置一个进程的优先级,其中nice通过指定优先级启动一个特定的进程,renice命令则用于调整已经运行的进程的优先级。1)nice命令nice命令用于在启动进程时设置其优先级。基本使用格式如下:nice-priority 程序名其中参数priority表示优先级,取值范围为-2019。该命令可以使指定的程序以priority指定的优先级运行。例如,可以在终端提示符下输入如下的命令来按指定的优先级运行vim程
21、序。rootmyhost root#vim&默认情况下,优先级为0rootmyhost root#nice-18 vim&优先级为18rootmyhost root#nice-18 vim&优先级为-189.2 进程管理 9.2.2 控制进进程的优优先级级下面以ps-l命令来验证nice命令执行的结果,如下图所示,其中NI字段就是进程的优先级。验证nice命令2)renice命令在RedHat Linux 9系统中,如果进程启动后需要重新调整优先级,可以使用renice命令。该命令在重新指定进程运行优先级时,需要指定进程的进程号PID,而不是进程名,因为在系统中可能存在多个同名进程在运行。9.
22、2 进程管理 9.2.2 控制进进程的优优先级级renice命令的使用格式如下:renice priority 进程号或renice 选项 priority该命令常用参数及含义如下表所示。renice命令参数及含义参 数含 义-u usr_name调整用户usr_name启动的所有进程的优先级-g grp_name调整组grp_name中所有用户执行的进程的优先级9.2 进程管理 9.2.2 控制进进程的优优先级级其中参数priority表示优先级,取值范围为-2019。该命令能以指定的优先级priority重新设置由进程号指定的进程的优先级。需要注意的是renice与nice命令不同,在重设
23、进程优先级时,不需要在优先级前使用连字符“-”。例如,重设上例中进程号2710对应的vim进程的优先级,可以在终端提示符下使用如下的命令:rootmyhost root#renice-10 2710 优先级重设为-109.2 进程管理 9.2.2 控制进进程的优优先级级2.图图形工具在“系统监视器”的主窗口中,选定需要调整优先级的进程并右击,在弹出的快捷菜单中选择“改变优先级”选项,如图下所示。选取快捷菜单中的“改变优先级”9.2 进程管理 9.2.2 控制进进程的优优先级级在弹出的如下图所示的“改变优先级”对话框中,拖动“nice值”滑块,调整优先级,然后单击“改变优先级”按钮,即可改变其优
24、先级。“改变优先级”窗口9.2 进程管理 9.2.3 向进进程发发送信号号9.2.3 向进进程发发送信号号在Linux系统中可以通过工具向系统中正在运行的进程发送终止、暂停、继续执行等信号。统Windows系统一样,Linux系统中的进程也会因为某些原因而陷入僵死状态,所谓“僵死”就是由于进程在运行的过程中出错或是其他不可预知的原因,而被非正常终止,但是不能及时释放占用的系统资源,此时在使用ps-aux命令时可以看到该进程的状态标识为“Z”,即僵死状态。系统管理员可以通过发送终止信号SIGKILL的方式来清除该僵死进程,以释放被浪费的进程号等系统资源。在RedHat Linux 9中提供了ki
25、ll和killall两个工具向系统进程发送信号。kill用于向进程号指定的进程发送信号,以区别系统中多个同名进程。如果希望同时向多个同名进程发送信号,就可以使用killall工具。kill的使用格式如下:9.2 进程管理 9.2.3 向进进程发发送信号号kill 选项 进程号该命令的常用参数及含义如下表所示。kill命令参数及含义参 数含 义-l列出kill命令可以发送的信号-s signum 或-signum向指定的进程发送信号编号signum指定的信号-s signame 或-signame向指定的进程发送信号名signame指定的信号-signum向指定的进程发送信号编号signum指定
26、的信号9.2 进程管理 9.2.3 向进进程发发送信号号kill可以向进程发送的信号可以使用kill-l命令列出,如下图所示。kill支持的信号9.2 进程管理 9.2.3 向进进程发发送信号号killall的使用格式如下:killall 选项 进程名该命令的常用参数及含义如下表所示。kill命令参数及含义参 数含 义-l列出killall命令可以发送的信号-e精确匹配长进程名-g杀死属于该进程组的进程-i交互方式,在杀死进程之前征求用户确认-v报告信号是否成功发送9.2 进程管理 9.2.3 向进进程发发送信号号killall向进程发送的信号同kill命令。例9.1 当前系统中存在一个vim
27、进程(进程号为12153),现使用kill命令向其发送SIGKILL信号,结束其运行。在终端提示符下执行如下的命令,然后使用ps aux来查看结果,如下图所示:rootmyhost root#kill-9 12153kill命令结果9.2 进程管理 9.2.3 向进进程发发送信号号例9.2 结束当前系统中的多个vim进程。可以在终端提示符下使用如下的命令:rootmyhost root#killall-9 vim执行结果如下图所示。终止多个同名进程9.2 进程管理 9.2.3 向进进程发发送信号号注意:如果kill和killall没有指定信号,默认发送SIGKILL(信号编号为9)信号。另外,
28、当某个守护进程被重新配置或修改后,可以使用kill命令向其发送HUP信号来重启该守护进程,以便重新加载修改后的配置文件。例如,要重启xinetd(进程号为2178),可以在终端提示符下使用如下的命令:rootmyhost root#kill-HUP 21789.2 进程管理 9.2.4 Linux的定时时任务务9.2.4 Linux的定时时任务务在Linux系统中可以指定时间段,也可以在指定的日期或系统平均负载低于设置量的时候自动运行任务。系统管理员可以使用定时任务来执行定期备份、监控系统或运行定制脚本等。在许多Linux系统中,都随系统带有自动化定制任务工具cron、at和batch。本节着
29、重介绍cron和at工具。1.cron工具cron工具是一个可以根据指定的时间、日期、月份和星期的组合来自动重复执行任务的工具。在Linux系统中cron工具以守护进程crond的方式存在,常驻系统。9.2 进程管理 9.2.4 Linux的定时时任务务在使用cron的定时任务(调度)功能之前,必须确定系统是否已经安装软件包vixie-cron.rpm。可以在终端提示符下使用rpm-qa vixie-cron命令查看系统是否已经安装该软件包。如果系统给出如下图的信息表示已经成功安装。确认是否安装vixie-cron软件包9.2 进程管理 9.2.4 Linux的定时时任务务Linux系统在默认
30、的情况下,crond守护进程是启动的,如果需要查看当前时刻crond守护进程是否处于运行状态,可以在终端提示符下使用如下的命令,命令返回的crond进程状态,如下图所示。rootmyhost root#service crond status查看crond进程状态9.2 进程管理 9.2.4 Linux的定时时任务务1)crond主配置文件crond守护进程有一个主配置文件/etc/crontab,其基本内容如下图所示。/etc/crontab文件内容9.2 进程管理 9.2.4 Linux的定时时任务务crontab文件的前4行用于设置crond进程调度任务时的环境变量。SHELL变量的值用
31、于指明任务中命令或脚本解释使用的shell;PATH变量的值用于指明任务中所包含的命令搜索的路径;MAILTO变量定义crond进程调度任务时的输出被投递给的邮箱用户;HOME变量用来设置在执行命令或脚本时使用的主目录。第一个“run-parts”行后面的部分是任务行,每行代表crond进程调度的一项任务,其语法是如下图所示。crontab文件语法9.2 进程管理 9.2.4 Linux的定时时任务务crontab文件各字段含义如下表所示,其中“*”表示任意有效值。crontab文件字段及含义字 段含 义取值范围minute每小时中的第几分钟执行任务059hour每日的第几小时执行任务023d
32、ay每月的第几天执行任务131month每年的第几月执行任务112或是英文月份缩写,例如Jan、Feb等dayofweek每周的第几天执行任务06,其中0代表周日,也可以是英文的星期缩写,例如Sun、Mon等username指定由哪个用户来执行任务 用户名command要执行的命令名称及参数命令名及参数9.2 进程管理 9.2.4 Linux的定时时任务务2)设置定时任务使用crond实现定时任务的方法有两种,一种就是在其主配置文件中添加调度语句;另一种则无需增加主配置文件内容,只需要适当地修改crontab文件。例如,需要Linux系统在每天的12点执行一个名为my_echo.sh的脚本,进
33、行系统备份,可以使用如下两种方法:方法一:将my_echo.sh保存在/usr/local/sbin中,设置其可执行属性,然后在crond的主配置文件中添加如下的行:0 12*root/usr/local/sbin/my_echo.sh9.2 进程管理 9.2.4 Linux的定时时任务务方法二:由于在crontab文件原有的调度语句中,command字段使用run-parts脚本来执行/etc/目录下子目录cron.hourly、cron.daily、cron.weekly和cron.monthly中的脚本文件。因此可以将my_echo.sh脚本保存到/etc/cron.daily目录中,设
34、置可执行属性,然后将“/etc/cron.daily”所在的行,改成如下的语句:0 12*root run-parts/etc/cron.daily2.at工具at工具用于在指定的时刻执行定时任务。在Linux系统中at工具以守护进程atd的方式存在,常驻系统。at命令可以向atd任务队列中添加任务,也可以查看、删除atd队列中的任务。at命令格式如下:at time 选项9.2 进程管理 9.2.4 Linux的定时时任务务time即为指定的时间,格式为hh:mm,其中的hh为小时,mm为分钟。可以使用24小时制,也可以使用12小时制表示,如使用12小时制,可以在时间后使用am表示上午,pm
35、表示下午。下表所示为at命令的常用参数及含义。at命令参数及含义参 数含 义-l列出任务队列中的尚未执行的任务,也可使用atq命令-d删除任务队列中尚未执行的任务,也可使用atrm命令-f w_file将w_file文件内容作为任务-q query将任务添加到特定的队列query中-V打印at版本号9.2 进程管理 9.2.4 Linux的定时时任务务1)从标准输入获得任务例如,由于系统管理需要,希望在上午8:50执行一个定时任务。可以在终端提示符下输入如下的命令,然后按照如下图所示的操作。rootmyhost root#at 8:50amat操作9.2 进程管理 9.2.4 Linux的定时
36、时任务务在at 8:50am命令输入后,系统给出“at”提示符,在其后输入任务的内容。输入完毕后,使用Ctrl+D结束at提示符。此时该任务被加入atd的任务等待队列,可以使用at-l或atq命令查看,如下图所示。查看atd队列第一列是任务号,第二列是任务执行的时间,a表示任务所在的队列号,root表示执行任务的用户。9.2 进程管理 9.2.4 Linux的定时时任务务2)从文件中获取任务从文件中获取atd任务的方法有两种:一种是使用输入重定向,另一种是使用at工具提供的-f参数。对于上例中的任务内容,可以将at提示符后面除EOF所在的行写入/root/work文件中,然后在终端提示符下执行
37、如下命令:rootmyhost root#at 8:50 work或rootmyhost root#at 8:50-f work结果如下图所示。使用Ctrol+D结束at提示符。9.3 Linux服务配置 9.3.1 守护进护进程的工作原理和方式在Linux系统中,提供给用户的应用服务是通过守护进程实现的。所谓守护进程,就是那些在后台运行的进程,有时也称为服务。这些进程为用户提供特定的服务,如超级服务器守护进程Xinetd。守护进程独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。常常在系统引导装入时启动,在系统关闭时终止。选择运行哪些守护进程,要根据具体需求决定。9.3.1 守
38、护进护进程的工作原理和方式1.守护进护进程的工作原理在C/S模式下,服务器守护进程在一个特定的端口上进行监听(Listen),等待客户连接,连接成功后服务器和客户端通过端口进行数据通信。守护进程的工作就是打开一个端口,并且监听进入连接。如果客户端产生一个连接请求,守护进程就创建(Fork)一个子服务器响应这个连接请求,而服务器守护进程继续监听其他的服务请求。9.3 Linux服务配置 9.3.1 守护进护进程的工作原理和方式2.守护进护进程的工作模式服务器守护进程的工作模式,包括独立工作模式stand-alone和基于Internet超级服务器Xinetd的工作模式。1)独立工作模式stand
39、-alone独立运行的守护进程由init进程负责管理,init进程通过执行/etc/rc.d/init.d/目录下脚本来启动独立工作模式下的守护进程。系统服务都是独立运行的守护进程,其中包括系统日志守护进程syslogd和定时管理进程crond等。运行独立的守护进程的工作方式称作stand-alone模式。Stand-alone模式是Unix传统的C/S结构的访问模式。9.3 Linux服务配置 9.3.1 守护进护进程的工作原理和方式stand-alone模式原理如下图所示。stand-alone工作模式9.3 Linux服务配置 9.3.1 守护进护进程的工作原理和方式独立工作模式适合Ap
40、ache服务器、邮件服务器Sendmail、域名服务器named等负载较大的服务器。工作在这种模式下的守护进程,在监听到客户端的连接请求后,将预先创建服务程序,响应客户端的数据请求,而守护进程则继续监听新的客户请求,从而满足负载较重的工作环境。2)基于超级服务器Xinetd模式对于stand-alone模式下的守护进程,系统提供的每一种服务,都必须运行一个用于监听相应端口的守护进程,以便在客户端通过这些端口发送连接请求时,能及时响应这些请求。这些用于监听的守护进程,其功能模块基本相同,这大大增加了资源开销。为了解决这个问题,Linux引入了Internet超级服务器。在RedHat Linux
41、 9中使用的Internet超级服务器守护进程是Xinted。9.3 Linux服务配置 9.3.1 守护进护进程的工作原理和方式同stand-alone模式相比,Xinted守护进程能够同时监听多个指定的端口,在接受客户请求时,能够根据用户请求的端口不同,启动不同的网络服务进程来处理这些客户请求。可以把Xinted看做一个管理启动服务的管理服务器,它决定把一个客户请求交给哪个服务程序处理,然后启动相应的守护进程。Xinted模式工作原理如下图所示。Xinetd工作模式9.3 Linux服务配置 9.3.1 守护进护进程的工作原理和方式工作在Xinetd模式下的服务进程,系统无需为每个服务进程
42、运行相应的用于监听连接请求的守护进程,运行单个Xinetd就可以同时监听所有服务端口,这样就降低了系统开销。但是对于访问量大、经常出现并发访问的服务,Xinetd就要频繁启动对应的网络服务进程,反而会导致系统性能下降。9.3 Linux服务配置 9.3.2 守护进护进程管理工具9.3.2 守护进护进程管理工具在进程系统管理的时候,需要及时获取系统守护进程的状况,并且根据需要及时结束或启动守护进程。RedHat Linux 9提供了命令行工具pstree、ntsysv、chkconfig和图形工具redhat-config-services 4种不同的守护进程管理工具。这些工具类似于Micros
43、oft Windows中的服务管理。1.查查看进进程树树pstree在RedHat Linux 9系统中,可以使用pstree命令来查看系统的进程树,通过进程在系统进程树中的结点位置,可以判断进程的工作模式。pstree命令用法如下:pstree 选项9.3 Linux服务配置 9.3.2 守护进护进程管理工具该命令常用的参数及含义如下表所示。pstree命令参数及含义参 数含 义-a显示进程的完成命令及参数-c精简模式显示,不列出进程号和参数-h高亮度显示当前进程-p显示进程号9.3 Linux服务配置 9.3.2 守护进护进程管理工具在pstree显示的结果中,以stand-alone模式
44、工作的进程直接作为init进程的子结点,如syslogd进程等;基于超级服务器Xinetd模式运行的进程则作为Xinetd进程的参数给出,如telnet进程等,如下图所示。pstree执行9.3 Linux服务配置 9.3.2 守护进护进程管理工具2.ntsysv工具ntsysv工具给用户提供了一个简单的界面,用于管理随系统启动的守护进程。ntsysv工具还提供了配置不同运行级别中守护进程随系统启动或终止的功能。默认情况下,ntsysv只配置当前运行级别。ntsysv命令的使用格式如下:ntsysv-level runlevel其中参数-level runlevel用于指定特定的运行级别。例如
45、,执行下列命令:rootmyhost root#ntsysv-level 345表示配置运行级别3、4、和5。9.3 Linux服务配置 9.3.2 守护进护进程管理工具ntsysv命令的工作界面如右图所示。ntsysv的工作界面提供了一个列表框、“确定”按钮和“取消”按钮。使用Tab键可以在列表框和按钮之间切换。当当前焦点在列表框时,可以使用光标键来上下查看列表,需要时可以使用空格键来标记指定的服务,若服务前面显示“*”,表示该服务被标记为启动,按下F1键时,可以弹出每项服务的简短描述。当前焦点在“确定”或“取消”按钮时,可以使用空格键来激活按钮。ntsysv运行界面9.3 Linux服务配
46、置 9.3.2 守护进护进程管理工具3.chkconfig工具chkconfig命令也可以用来激活和解除服务的随系统启动。chkconfig命令提供了一个纯文本的模式,用于显示系统当前服务的运行和终止情况。chkconfig命令的格式如下:chkconfig-level runlevel 选项该命令常用的参数及含义如下表所示。chkconfig命令参数及含义参 数含 义-level runlevel指定运行级别,runlevel即为运行级别-list显示当前系统的守护进程的运行状况-add d_name添加chkconfig管理的守护进程-del d_name删除chkconfig管理的守护进
47、程9.3 Linux服务配置 9.3.2 守护进护进程管理工具chkconfig-list用于显示系统服务列表,并显示这些服务在运行级别0到6中是被设置成启动(on)还是停止(off)。chkconfig还能用来设置某一服务在某一指定的运行级别内的启动和停止。例如,要在运行级别3、4、5中停运snmp服务,然后在查看系统中的服务运行情况,可以在终端提示符中使用下面的命令:rootmyhost root#chkconfig-level 345 snmp offrootmyhost root#chkconfig-list其执行结果如下图所示。9.3 Linux服务配置 9.3.2 守护进护进程管理
48、工具4.图图形工具redhat-config-services除了上面介绍的服务管理工具以外,RedHat Linux 9中还提供了一个图形化的守护进程管理工具,这就是redhat-config-services。单击“主菜单”“系统设置”“服务器设置”“服务”菜单项,或是在命令提示符下输入命令“redhat-config-services”,即可打开如右图所示的“服务设置”窗口。其中显示了对每项服务的描述以及每项服务是否在引导时启动(运行级别3、4、5),并允许用户启动、停止或重新启动/etc/rc.d/init.d中的哪些SysV服务以及哪些xinetd服务。“服务设置”窗口9.3 Lin
49、ux服务配置 9.3.2 守护进护进程管理工具“服务设置”窗口列出了/etc/rc.d/init.d中的服务和由Xinetd控制的服务。点击左侧列表中的服务名显示该服务的简短描述以及它的服务状态。如果这个服务不是Xinetd服务,状态窗口会显示该服务目前是否在运行。如果该服务被Xinetd 所控制,状态窗口会显示“Xinetd服务”这个短语。要立即启动、停止或重新启动某项服务,应首先从列表中选择该项服务,然后单击工具栏上的“启动”、“停止”、“重启”按钮,或单击“行动”菜单项中的相应选项。如果该服务是一个Xinetd服务,行动按钮会被禁用,因为它们不能被单独启动或停止。如果用户通过选择或取消选择服务名旁的复选箱来启用或禁用了Xinetd服务,则必须从下拉菜单中选择“文件”“保存改变”来重新启动Xinetd,并立即启用或禁用被改变的Xinetd 服务。Linux操作系统实用教程第九章 完