Linux守护进程工作原理和方式

读书笔记系列之:Linux守护进程工作原理和方式

笛风

2013.10.16

文本Tag: 操作系统linux服务器 操作系统

http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105780265d03c0743ca08b537cd0995f93130a1c187bb0bb25201b19d1c47e6c1caf4d59f7f23470350122b79fcd834ad7ac925f6ed2616b2e08c31c528516&p=8257d75686cc41ac5eb2c32d02149c&newp=9078ca0d8b934eaf5bebc82d021482231610db2151d1d649&user=baidu

  4.2.4 Linux守护进程工作原理和方式

  在C/S模式下,服务器监听(Listen)在一个特定的端口上等待客户连接。连接成功后服务器和客户端通过端口进行数据通信。守护进程的工作就是打开一个端口,并且等待(Listen)进入连接。如果客户端产生一个连接请求,守护进程就创建(Fork)一个子服务器响应这个连接,而主服务器继续监听其他的服务请求。

  1.独立运行的守护进程

   独立运行的守护进程由init脚本负责管理,所有独立运行的守护进程的脚本在/etc/rc.d/init.d/目录下。系统服务都是独立运行的守护进 程包括:syslogd和cron等。运行独立的守护进程工作方式称为stand-alone。它UNIX传统的C/S模式的访问模式。服务器监听在一个特点的端口上等待客户端的连接。如果客户端产生一个连接请求,守护进程就创建一个子服务器响应这个连接,而主服务器继续监听。以保持多个子服务器池等待下 一个客户端请求。stand-alone模式工作原理如图4-4所示。

    图4-4 stand-alone工作模式

  工作在stand-alone模式下的网络服 务有route、gated。另外是大家最熟悉是Web服务器:Apache和邮件服务器Sendmail、域名服务器Bind。因为这些负载很大服务器 上,预先创子服务器,可以通过客户的服务速度。在Linux系统中通过stand-alone工作模式启动的服务由/etc/rc.d/下面对应的运行级 别当中的符号链接启动。

  2.xinetd模式的守护进程

  从守护进程的概念可以看出,对于系统所要通过 的每一种服务,都必须运行一个监听某个端口连接所发生的守护进程,这通常意味着资源浪费。为了解决这个问题,Linux引进了"网络守护进程服务程序"的 概念。Redhat Linux 9以后版本使用的网络守护进程是xinted(eXtended InterNET daemon)。和stand-alone模式相比,xinted模式也称Internet Super-Server(超级服务器)。xinetd能够同时监听多个指定的端口,在接受用户请求时,它能够根据用户请求的端口不同,启动不同的网络服 务进程来处理这些用户请求。可以把xinetd看做一个管理启动服务的管理服务器,它决定把一个客户请求交给那个程序处理,然后启动相应的守护进程。 xinetd模式工作原理如图4-3所示。

     图4-5 xinetd工作模式

   和stand-alone工作模式相比,系统不想要每一个网络服务进程都监听其服务端口。运行单个xinetd就可以同时监听所有服务端口,这样就降低 了系统开销,保护了系统资源。但是当访问量大、经常出现并发访问时,xinetd想要频繁启动对应的网络服务进程,反而会导致系统性能下降。查看系统为Linux服务提供哪种模式方法在Linux命令行可以使用pstree命令,可以看到两种不同方式启动的网络服务。一般来说一些负载高的服务如 sendmail、Apache服务是单独启动的。而其他服务类型都可以使用xinetd超级服务器管理。查看目前运行的守护进程可以使用命 令:"pstree"。

  3.三种守护进程管理工具

  Redhat Linux提供了三种不同的守护进程管理工具:redhat-config-services、ntsysv、chkconfig,可以根据具体需要灵活运用。

  (1)redhat-config-services

   redhat-config-services是一个图形化应用程序,它显示了每项服务的描述,以及每项服务是否在引导时启动(运行级别3、4、5), 以及允许你启动、停止或重新启动/etc/rc.d/init.d中的哪些SysV服务,哪些xinetd服务。要从桌面启动服务配置工具,可通过单击面 板上的「主菜单」=>「系统设置」=>「服务器设置」=>「服务」,或在shell提示下,输入命令:"redhat-config-services"(如图4-6所示)。

    图4-6 redhat-config-services配置工具

   redhat-config-services列出了/etc/rc.d/init.d中的服务和由xinetd控制的服务。单击左侧列表中的服务名来 显示该服务的简短描述,以及它的服务状态。如果这个服务不是xinetd服务,状态窗口会显示该服务目前是否在运行。如果该服务被xinetd所控制,状态窗口会显示"xinetd服务"这个短语。要立即启动、停止或重新启动某项服务,可从列表中选择该项服务,然后单击工具栏上的相应按钮(或从"行动"下 拉菜单中选择行动)。如果该服务是一个xinetd服务,行动按钮会被禁用,因为它们不能被单个地启动或停止。如果你通过选择或取消选择服务名旁的复选框 来启用或禁用了xinetd服务,必须从下拉菜单中选择"文件"=>"保存改变"来重新启动xinetd,并立即启用或禁用你所改变的xinetd 服务。xinetd还被配置成自动记忆设置。你可以同时启用或禁用多个xinetd服务,在结束后再保存改变。

  (2)ntsysv

   ntsysv工具为激活或停运服务提供了简单的界面。你可以使用ntsysv来启动或关闭由xinetd管理的服务,还可以使用ntsysv来配置运行 级别。按照默认设置,只有当前运行级别会被配置。要配置不同的运行级别,使用–level选项来指定一个或多个运行级别。例如,命令ntsysv– level345配置运行级别3、4和5。ntsysv的工作界面如图4-3所示。使用上下箭头来上下查看列表。使用空格键来选择或取消选择服务,或按"确定"和"取消"按钮。要在服务列表和"确定"、"取消"按钮间切换,使用Tab键。*标明某服务被设为启动。按F1键会弹出每项服务的简短描述。

  (3)chkconfig

   chkconfig命令也可以用来激活和解除服务。chkconfig–list命令显示系统服务列表,以及这些服务在运行级别0到6中已被启动 (on)还是停止(off)。chkconfig还能用来设置某一服务在某一指定的运行级别内被启动还是被停运。例如,要在运行级别3、4、5中停运 nfs服务,使用下面的命令:

  chkconfig –level 345 nfs off

  4.合理选择守护进程规避安全隐患

  运行不必要或有漏洞的守护进程会给操作系统带 来安全和性能上的影响。对于系统安全来说,操作系统中的任何一个漏洞,都可能使整个系统受到攻击。所以,增加系统安全性的最佳办法就是尽量监视系统的功能。文章开始介绍了重要的守护进程,其中"crond、syslog、keytable、xinetd、kudzu、iptables"等是需要运行 的,echo、echo-udp、daytime、daytime-udp、chargen、chargen-udp主要做调试用,普通用户基本用不到, 可以关闭。

  r字开头的守护进程:rsh、rstatd、rsync、rusersd、rwalld,这些命令都是Berkley远程命 令,因为都以字母r开头,故称r*命令。主要用来使一台计算机上的某个用户以相同的账号远程执行另一台计算机的一个程序。但是,r命令已经被证实存在安全 风险。对于确实需要的守护进程,应该尽量选用最新的版本程序,并增强安全防范。

  另外我们还要合理选择守护进程。例如innd是运行新闻组服务的进程,如果用户不做新闻组服务器,应该关掉。

每天告诉自己一次,『我真的很不错』

Linux守护进程工作原理和方式

相关文章:

你感兴趣的文章:

标签云: