⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0560daemons.htm

📁 鸟哥LINUX 学习课本
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"><html><head>   <meta http-equiv="Content-Type" content="text/html; ">   <meta name="Author" content="VBird">   <meta name="GENERATOR" content="Mozilla/4.5 [zh-TW] (WinNT; I) [Netscape]">   <meta name="Description" content="daemons 的介紹">   <title>鸟哥的 Linux 私房菜 -- 认识 Linux 系统服务的 daemons</title><!-- saved from url=(0022)http://internet.e-mail --><style>   <!--   body{background-image=url(http://linux.vbird.org/VBirdLinux.jpg);background-ATTACHMENT=FIXED}   --></style></head><body nosave="" background="0560daemons_files/VBirdLinux.jpg"><center><center><b><font size="+2" color="#3333ff"><font face="SimSun">鸟哥的</font><font face="Times New Roman,Times"> Linux </font><font face="SimSun">与</font><font face="Times New Roman,Times"> ADSL </font><font face="SimSun">私房菜</font></font></b><br><a href="http://linux.vbird.org/" target="_top"><img src="0560daemons_files/VBirdTitle2.jpg" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_basic"><img src="0560daemons_files/icon_system.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_server"><img src="0560daemons_files/icon_server.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_security"><img src="0560daemons_files/icon_security.jpg" nosave="" border="0" height="25" width="90"></a><a href="http://phorum.vbird.org/" target="_blank"><img src="0560daemons_files/icon_forums.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/adsl"><img src="0560daemons_files/icon_adsl.gif" nosave="" border="0" height="25" width="90"></a><br><hr width="100%"></center><font size="+2" color="#3333ff"><a href="http://linux.vbird.org/linux_basic/0560daemons.php" target="_self"><font face="SimSun">认识系统服务</font><font face="Times New Roman,Times">daemons</font></a></font></center><div align="right"><font size="-1" color="#3333ff" face="SimSun">最近更新日期:2003/02/11</font></div><font color="#000099"><font size="+1"><a href="#daemon">什么是 daemon</a>:</font><a href="#services">/etc/services</a>,<a href="#name_rule">命名规则</a>,</font><br><font color="#000099"><font size="+1"><a href="#Whereisdaemon">系统的Daemons 放在哪里</a>:</font> <a href="#init.d">/etc/rc.d/init.d/</a>,<a href="#xinetd.conf">/etc/xinetd.conf</a>,<a href="#xinetd.d">/etc/xinetd.d</a>,</font><br><font size="+1" color="#000099"><a href="#xinetd">解析 xinetd.conf</a></font><br><font color="#000099"><font size="+1"><a href="#tcp_wrappers">TCP_Wrappers</a></font>:/etc/hosts.allow, /etc/hosts.deny,</font><br><font color="#000099"><font size="+1"><a href="#open_services">系统开启的服务</a>:</font>netstat, ntsysv, chkconfig,</font><br><font size="+1" color="#000099"><a href="#illustrations">各个服务的简单说明</a></font><br><font size="+1" color="#000099"><a href="#FAQ">本章习题练习</a></font><br><hr width="100%"><a name="daemon"></a><font size="+1" color="#000099">什么是daemon</font><blockquote>如果您常常上网去查看一些数据的话,尤其是关于 Unix-Like 的相关操作系统,如FreeBSD, Unix, Linux 等等,应该会常常听到 daemons 这个字眼,那么 daemon是什么东西呀!?怎么这么常被见到?呵呵,Daemon 的字面上的意思就是『守护神、恶魔?』还真是有点奇怪呦!^_^"" 。基本上,我们的 Linux 主机常常会收到一些要求,不论是来自本机系统的要求或者是网络Client 端的服务要求,反正只要有要求来的时候,通常就是各式各样的 daemons负责去唤起应该要工作的 Servers 来工作啦!那么 daemons 目前有两种基本的模式,分别是stand_alone 与 super daemon 两种方式,底下就来说一说这两种 daemon 的工作型态:<ul><li><b><font color="#000099">&#160;stand_alone </font></b>: 就字面上的意思来说,standalone 就是『独立的启动』的意思,也就是说,该 daemon 启动之后,就直接常驻在内存当中啰!他虽然会一直的占用系统的资源,但最大的优点就是,他会一直启动的啦!所以当有要求来的时候,他就会很快速的响应啰!常常用在这一种daemon 的网络服务如常见的 httpd 这一个即是一例!</li></ul><ul><li><b><font color="#000099">super daemon</font></b> : 相对于 stand alone的执行方式,这一种服务的启动方式则是藉由统一的一个 daemon 来负责唤起该服务!这一个统一负责的daemon 就是 inet 这支服务啦!不过,在后来的 Linux 发展套件中,则是使用xinet 这个设定啰!我们这里以 Mandrake 的 xinet 来做说明。当有网络的服务要求来的时候,该要求会先送给xinet 这个服务,然后 xinet 根据该网络要求送来的数据封包的内容 ( 该内容会记录IP 与 port ) 来将数据封包送给实际运作的服务!而该服务这个时候才会启动的!最常见到的就是ftp 这支网络服务啦!这种最大的优点就是当没有数据封包来的时候,该服务不会一直占据系统资源( 该服务会在 sleeping 的状态吧! ) ,但是相对的,他的反应时间也会比较慢,因为还要花费一段时间去『唤醒』该服务呀!</li></ul>那么这两种启动的方式哪一个比较好呢?见仁见智啦!而且还要看该主机的工作负荷与实际的用途说!例如当你的主机是用来作为WWW 服务器的,那么 httpd 自然就以 stand alone 的启动方式较佳!事实上,我们常常开玩笑的说明stand alone 与 super daemon 的情况,可以银行的窗口来作为说明的范例!<ul><li><b><font color="#000099">stand alone</font></b> : 在银行里面,假设有一种单一服务的窗口,例如存钱窗口,所以,当你需要存钱的时候,直接前往该窗口,就有『专人』为您服务啦!</li></ul><ul><li><b><font color="#000099">super daemon</font></b> :在银行里面假设还有另外一种复合型态的窗口,同时提供转帐、资金调度、提款等等的业务,那当你需要其中一项业务的时候,就需要前往该窗口,但是坐在窗口的这个营业员,拿到你的需求单之后,往后面一丢『喂!那个转帐的仁兄!该你的工作了』那么那个仁兄就开始工作去!然而里头还有资金调度与提款等负责业务的仁兄呢?他们在干嘛?嘿嘿!看看报、喝喝茶啰!那么这里就会引出另外一个问题啦!假设银行今天的人潮特别的汹涌,所以这个窗口后面除了你之外还有很多的人!那么想一想,这个窗口是要『一个完成再来下一个』还是『全部都把你们的单据拿来,我全部处理掉』呢?呵呵!是不是不太一样?</li><br> <ul><li><b><font color="#000066">multi-threaded</font></b>:就是我们提到的,全部的客户之要求都给他拿来,一次给他交办下去,所以一个服务同时会负责好几个程序。</li></ul> <ul><li><b><font color="#000066">single-threaded</font></b>:这个就是目前我们『人类的银行』最常见的方式啦,不论如何,反正一个一个来,第一个没有处理完之前,后面的请排队!嘿嘿!所以如果client 的要求突然大增的话,那么这些晚到的 client 可得等上一等!</li></ul></ul>另外,需要注意的是,既然银行里头有这两种窗口同时存在,所以啰,在 Linux系统里面,这两种 daemon 是可以同时存在的啦!也就是说,某些服务可以使用stand alone 来启动,而有其它的服务则可以使用 xinet ( 或者是 inet ) 大致的情况就是这样啦!了呼!?<ul><hr width="100%"><li><a name="services"></a><b><font color="#000099" face="SimSun">/etc/services</font></b></li><br>OOK!这个时候就又发生了另一个问题啰!那么我怎么知道要将我的数据送到那个窗口去!咦!那个窗口不是有写说明说他是干嘛用的吗?所以你要存钱、转帐、或者是进行汇款,都可以在不同的窗口来完成,那么换到实际的网络情况来说呢,因为我们的TCP 封包里面含有 port 与 IP 对吧!将那些已经监听的 port 想成是这些窗口,如此一来你的TCP 封包便可以依据不同的需求,而到达不一样的 port 来索取服务了!因此,你的联机是FTP, WWW, smtp 等等都好,绝对不会被搞错啦!<br> <br>好了,如果我想要知道这个 port 是由那个服务所启动的呢?在 Linux 系统里面有个档案在说明那个窗口与服务的&#160;( services and ports ) 对应!呵呵!那就是鼎鼎大名的 <b><font color="#000066">/etc/services</font></b>这个档案啦!我们取一段常常看到的port 与相关服务的区段来看一下好了!<br> <table bgcolor="#000000" border="1" cols="1" width="600"><tbody><tr><td><font size="-1" color="#ffffff" face="SimSun">[root @testroot]# vi /etc/services</font><br><font size="-1" color="#ffff00" face="SimSun">.... 略</font><br><font size="-1" color="#ffffff" face="SimSun">ftp-data&#160;&#160;&#160;&#160;&#160;&#160;&#160;20/tcp</font><br><font size="-1" color="#ffffff" face="SimSun">ftp-data&#160;&#160;&#160;&#160;&#160;&#160;&#160;20/udp</font><br><font size="-1" color="#ffffff" face="SimSun">ftp&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;21/tcp</font><br><font size="-1" color="#ffffff" face="SimSun">ftp&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;21/udp</font><br><font size="-1" color="#ffffff" face="SimSun">ssh&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;22/tcp&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;# SSH Remote Login Protocol</font><br><font size="-1" color="#ffffff" face="SimSun">ssh&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;22/udp&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;# SSH Remote Login Protocol</font><br><font size="-1" color="#ffffff" face="SimSun">telnet&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;23/tcp</font><br><font size="-1" color="#ffffff" face="SimSun">telnet&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;23/udp</font><br><font size="-1" color="#ffffff" face="SimSun">smtp&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;25/tcp&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mail</font><br><font size="-1" color="#ffffff" face="SimSun">smtp&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;25/udp&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mail</font><br><font size="-1" color="#ffffff" face="SimSun">nameserver&#160;&#160;&#160;&#160;&#160;42/tcp&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; name&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;# IEN 116</font><br><font size="-1" color="#ffffff" face="SimSun">nameserver&#160;&#160;&#160;&#160;&#160;42/udp&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; name&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;# IEN 116</font><br><font size="-1" color="#ffffff" face="SimSun">domain&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;53/tcp&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; nameserver&#160;&#160;&#160;&#160;&#160;# name-domain server</font><br><font size="-1" color="#ffffff" face="SimSun">domain&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;53/udp&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; nameserver</font><br><font size="-1" color="#ffff00" face="SimSun">.... 略</font><br><font size="-1" color="#ffff00" face="SimSun">&lt;daemonname&gt;&#160;&#160; &lt;port 与型态&gt;&#160;&#160; &lt; 该服务的说明 &gt;</font></td></tr></tbody></table> <br>像上面说的是,第一栏为 daemon 的名称、第二栏为该 daemon 所使用的 port号码与其网络数据封包传送时候的类型,主要为较稳定的 tcp 封包与较易破损但较快速之udp 封包!举个例子说,那个 e-mail 的发信协议为 smtp 这个服务,而这个服务的使用之port 即为 25 啦!就这样!<br> <ul><li>请特别注意!虽然有的时候您可以藉由修改 /etc/services 来更改一个服务的 port号,不过并不建议如此做,因为很有可能会造成一些协议的错误情况!这里特此说明一番呦!(除非您要架设一个地下网站,否则的话,使用/etc/services 原先的设定就好啦!)</li></ul></ul><ul><hr width="100%"><li><a name="name_rule"></a><b><font color="#000099">Daemon 的命名规则:</font></b></li><br>每一个服务的开发者,当初在开发他们的服务时,都有特别的故事啦!不过,无论如何,这些服务的名称被建立之后,被挂上Linux 使用时,通常在服务的名称之后会加上一个 d ,例如例行性命令的建立的at, 与 cron 这两个服务,通常会被称为 atd 与 crond,这个 d 代表的就是 daemon的意思。所以,在<a href="http://linux.vbird.org/linux_basic/0440processcontrol.php">资源管理</a>那一章中,我们使用了ps 与 top 来观察程序时,都会发现到很多的 xxxd 的程序,呵呵!通常那就是一些daemon 的程序啰!</ul></blockquote><hr width="100%"><a name="Whereisdaemon"></a><font size="+1" color="#000099">系统的Daemons 放在哪里:</font><blockquote>好了!那么我们已经知道了 daemon 的作用之后,再来要讨论的是,那么他们启动的scripts 是放在哪里呀!?呵呵!底下就来说一说啰:<ul><li><b><font color="#000099">stand alone</font></b> : 这个放置在 <font color="#000099">/etc/rc.d/init.d/</font>这个目录里面,几乎所有的RPM 安装的套件之启动项目都在这里啦!</li></ul><ul><li><b><font color="#000099">super daemon</font></b> : 这个工作的那一支服务其实就是<b>xinet</b>或者是 <b>inet</b> 啦!请注意, <b>xinet</b> 也是一个 daemon 呢!他是 standalone 启动的,也就是他会一直在监听大家的需求,所以 xinet 的启动 scripts写在 <font color="#000099">/etc/rc.d/init.d/xinetd</font> 这个 scripts里面啰!但是挂在这个 daemon 里头的服务之设定项目呢?嗯!就是写在<font color="#000099">/etc/xinetd.conf </font>与 <font color="#000099">/etc/xinetd.d/</font>这个目录里面的任何档案!</li></ul><ul><hr width="100%"><li><a name="init.d"></a><b><font color="#000099" face="SimSun">/etc/rc.d/init.d/*</font></b></li><br>OK!先来了解一下 stand alone 的 daemon 是怎么启动的呢?!很简单,假如我们要启动<a href="http://linux.vbird.org/linux_basic/42syslog.html">syslog</a>这支记录登录文件的服务,那么要启动他的话,就直接下达:<ul><li><font color="#3333ff" face="SimSun">/etc/rc.d/init.d/syslog start</font></li><li><font color="#3333ff" face="SimSun">service syslog start</font></li></ul>亦即是档名之后加上 start 即可,或者是使用 Red Hat 才有的这个 service script来进行启动的功能!如果你还记得我们前几节提到过的 <a href="http://linux.vbird.org/linux_basic/37command_6bashshell-scripts.html">shellscripts</a> 的话,那么或许还记得 <a href="http://linux.vbird.org/linux_basic/37command_6bashshell-scripts.html#case">case..... esac</a> 这个有选择性的项目的语法吧!?没错!这几支服务就是以 bashscripts 里头的 case 语法写成的!因此,只要加上后面的参数,如此一来, scripts就会自动的去找寻执行档来执行啰!如果有兴趣的话,可以在你的系统里面的该目录下开一个档案来观看一下,就知道如何写啰!</ul></blockquote><blockquote><ul><hr width="100%">

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -