分享
 
 
 

认识系统服务daemons

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

什么是 daemon

如果您常常上网去查看一些资料的话,尤其是关于 Unix-Like 的相关作业系统,如 FreeBSD, Unix, Linux 等等,应该会常常听到 daemons 这个字眼,那么 daemon 是什么东西呀!?怎么这么常被见到?呵呵,Daemon 的字面上的意思就是『守护神、恶魔?』还真是有点奇怪呦! ^_^"" 。基本上,我们的 Linux 主机常常会收到一些要求,不论是来自本机系统的要求或者是网路 Client 端的服务要求,反正只要有要求来的时候,通常就是各式各样的 daemons 负责去唤起应该要工作的 Servers 来工作啦!那么 daemons 目前有两种基本的模式,分别是 stand_alone 与 super daemon 两种方式,底下就来说一说这两种 daemon 的工作型态:

?stand_alone : 就字面上的意思来说,stand alone 就是『独立的启动』的意思,也就是说,该 daemon 启动之后,就直接常驻在记忆体当中?!他虽然会一直的占用系统的资源,但最大的优点就是,他会一直启动的啦!所以当有要求来的时候,他就会很快速的回应?!常常用在这一种 daemon 的网路服务如常见的 httpd 这一个即是一例!

?super daemon : 相对于 stand alone 的执行方式,这一种服务的启动方式则是藉由统一的一个 daemon 来负责唤起该服务!这一个统一负责的 daemon 就是 inet 这支服务啦!而在 Red Hat 7.x 以后则是使用 xinet 这个设定?!当有网路的服务要求来的时候,该要求会先送给 inet 这个服务,然后 inet 根据该网路要求送来的资料封包的内容 ( 该内容会记录 IP 与 port ) 来将资料封包送给实际运作的服务!而该服务这个时候才会启动的!最常见到的就是 ftp 这支网路服务啦!这种最大的优点就是当没有资料封包来的时候,该服务不会一直占据系统资源 ( 该服务会在 sleeping 的状态吧! ) ,但是相对的,他的反应时间也会比较慢,因为还要花费一段时间去『唤醒』该服务呀!

那么这两种启动的方式哪一个比较好呢?见仁见智啦!而且还要看该主机的工作负荷与实际的用途说!例如当你的主机是用来作为 WWW 伺服器的,那么 httpd 自然就以 stand alone 的启动方式较佳!事实上,我们常常开玩笑的说明 stand alone 与 super daemon 的情况,以银行的窗口来作为说明的范例!

?stand alone : 在银行里面,假设有一种单一服务的窗口,例如存钱窗口,所以,当你需要存钱的时候,直接前往该窗口,就有『专人』为您服务啦!

?super daemon : 在银行里面假设还有另外一种复合型态的窗口,同时提供转帐、资金调度、提款等等的业务,那当你需要其中一项业务的时候,就需要前往该窗口,但是坐在窗口的这个人,拿到你的需求单之后,往后面一丢『喂!那个转帐的仁兄!该你的工作了』那么那个仁兄就开始工作去!然而里头还有资金调度与提款等负责业务的仁兄呢?他们在干嘛?嘿嘿!看看报、喝喝茶?!那么这里就会引出另外一个问题啦!假设银行今天的人潮特别的汹涌,所以这个窗口后面除了你之外还有很多的人!那么想一想,这个窗口是要『一个完成再来下一个』还是『全部都把你们的单据拿来,我全部处理掉』呢?呵呵!是不是不太一样?

omulti-threaded:就是我们提到的,全部的客户之要求都给他拿来,一次给他交办下去,所以一个服务同时会负责好几个程序。

osingle-threaded : 这个就是目前我们『人类的银行』最常见的方式啦,不论如何,反正一个一个来,第一个没有处理完之前,后面的请排队!嘿嘿!所以如果 client 的要求突然大增的话,那么这些晚到的 client 可得等上一等!

另外,需要注意的是,既然银行里头有这两种窗口同时存在,所以?,在 Linux 系统里面,这两种 daemon 是可以同时存在的啦!也就是说,某些服务可以使用 stand alone 来启动,而有其他的服务则可以使用 inet ( 或者是 xinet ) 大致的情况就是这样啦!了呼!?

OK!这个时候就又发生了另一个问题?!那么我怎么知道要将我的资料送到那个窗口去!咦!那个窗口不是有写说明说他是干嘛用的吗?!嘿嘿!那个就可以称做是 port 啦!而负责的人员就可以称做 服务 啦!那么在 Linux 系统里面那个档案在说明那个窗口与服务的 ( services and ports ) 对应呢?!呵呵!那就是鼎鼎大名的 /etc/services 这个档案啦!我们取一段常常看到的 port 与相关服务的区段来看一下好了!

[root @test root]# vi /etc/services .... 略 ftp-data 20/tcp ftp-data 20/udp ftp 21/tcp ftp 21/udp ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp # SSH Remote Login Protocol telnet 23/tcp telnet 23/udp smtp 25/tcp mail smtp 25/udp mail nameserver 42/tcp name # IEN 116 nameserver 42/udp name # IEN 116 domain 53/tcp nameserver # name-domain server domain 53/udp nameserver .... 略

像上面说的是,第一栏为 daemon 的名称、第二栏为该 daemon 所使用的 port 号码与其网路资料封包传送时候的类型,主要为较稳定的 tcp 封包与较易破损但较快速之 udp 封包!举个例子说,那个 e-mail 的发信协定为 smtp 这个服务,而这个服务的使用之 port 即为 25 啦!就这样!

?请特别注意!虽然有的时候您可以藉由修改 /etc/services 来更改一个服务的 port 号,不过并不建议如此做,因为很有可能会造成一些协定的错误情况!这里特此说明一番呦!(除非您要架设一个地下网站,否则的话,使用 /etc/services 原先的设定就好啦!)

Daemon 的命名规则:

这个地方也没有什么好说的啦!呵呵!基本上, Linux 系统里面,只要是 daemon 之类的服务项目,他的启动的名称都会多加上一个 d 字样!例如我们之前在 认识登录档 里面提到的 syslog 这个登录档服务,他的服务启动名称就是 syslogd 啦!而 例行性命令的建立 当中提到的 at, cron 服务呢?嘿嘿!没错,他们的服务名称就称为 atd, crond ?!这样了解了吗?!

系统的 Daemons 放在哪里:

好了!那么我们已经知道了 daemon 的作用之后,再来要讨论的是,那么他们启动的 scripts 是放在哪里呀!?呵呵!底下就来说一说?:

?stand alone : 这个放置在 /etc/rc.d/init.d/ 这个目录里面,几乎所有的 RPM 安装的套件之启动项目都在这里啦!

?super daemon : 这个工作的那一支服务其实就是 xinet 或者是 inet 啦!请注意, xinet 也是一个 daemon 呢!他是 stand alone 启动的,也就是他会一直在监听大家的需求,所以 xinet 的启动 scripts 写在 /etc/rc.d/init.d/xinetd 这个 scripts 里面?!但是挂在这个 daemon 里头的服务之设定项目呢?嗯!就是写在 /etc/xinetd.conf 与 /etc/xinetd.d/ 这个目录里面的任何档案!

/etc/rc.d/init.d/*

OK!先来了解一下 stand alone 的 daemon 是怎么启动的呢?!很简单,假如我们要启动 syslog 这支记录登录档的服务,那么要启动他的话,就直接下达:

?/etc/rc.d/init.d/syslog start

?service syslog start

亦即是档名之后加上 start 即可,或者是使用 Red Hat 才有的这个 service script 来进行启动的功能!如果你还记得我们前几节提到过的 shell scripts 的话,那么或许还记得 case ..... esac 这个有选择性的项目的语法吧!?没错!这几支服务就是以 bash scripts 里头的 case 语法写成的!因此,只要加上后面的参数,如此一来, scripts 就会自动的去找寻执行档来执行?!如果有兴趣的话,可以在你的系统里面的该目录下开一个档案来观看一下,就知道如何写?!

/etc/xinetd.conf

这个档案就是设定 xinet 服务的参数档案啦!

/etc/xinetd.d/*

这个目录里面的所有档案就是个别挂上 xinet 的所有服务啦!例如赫赫有名的 wu-ftpd 及 telnet 与 pop3 等等!

了解一下 xinetd.conf

我们先来看一看预设的情况之下, xinet 开启的情况为何?

# # Simple configuration file for xinetd # # Some defaults, and include /etc/xinetd.d/ defaults { instances = 60 log_type = SYSLOG authpriv log_on_success = HOST PID log_on_failure = HOST cps = 25 30 } includedir /etc/xinetd.d

service { ... ... }在上面的预设范例当中,说明的是:『如果没有指定的 services ( defaults ) 那么就用 {} 里面的设定来执行之!』正常的情况之下有点像上面例子中的黄色字体所示,那个里头的资料我们先来说明一下:注:那个 assign_op 主要有三种形式,分别如下:= : 表示后面的设定参数就是这样啦!+= : 表示后面的设定为『在原来的设定里头加入新的参数』-+ : 表示后面的设定为『在原来的参数舍弃这里输入的参数!』用途不太相同,敬请留意呦!好了!底下再来说一说那些 attribute 与 value !attribute (功能)assing_op (允许的动作)说明 (范例)一般设定项目:disableyes no允许该 server 可以执行或者是不能执行! 当设定为 yes 表示该服务不能执行!socket_typestream dgram raw当连线为 TCP 封包时,则使用 stream 类型 当连线为 UDP 封包时,则使用 dgram 类型 raw 代表 se

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有