- 論壇徽章:
- 0
|
轉(zhuǎn)貼,原文地址:http://linux.vbird.org/linux_basic/0560daemons.php
一、什么是 daemon:1、/etc/services,2、 命名規(guī)則,
二、系統(tǒng)的 Daemons 放在哪里: 1、/etc/rc.d/init.d/, 2、/etc/xinetd.conf, 3、/etc/xinetd.d,
三、解析 xinetd.conf
四、TCP_Wrappers : 1、/etc/hosts.allow,2、 /etc/hosts.deny,
五、系統(tǒng)開啟的服務(wù): 1、netstat, 2、ntsysv, 3、chkconfig,
六、各個(gè)服務(wù)的簡(jiǎn)單說(shuō)明
一、什么是 daemon
如果您常常上網(wǎng)去查看一些數(shù)據(jù)的話,尤其是關(guān)于 Unix-Like 的相關(guān)操作系統(tǒng),如 FreeBSD, Unix, Linux 等等,應(yīng)該會(huì)常常聽到 daemons 這個(gè)字眼,那么 daemon 是什么東西呀!?怎么這么常被見到?呵呵,Daemon 的字面上的意思就是『守護(hù)神、惡魔?』還真是有點(diǎn)奇怪呦! ^_^"" 。基本上,我們的 Linux 主機(jī)常常會(huì)收到一些要求,不論是來(lái)自本機(jī)系統(tǒng)的要求或者是網(wǎng)絡(luò) Client 端的服務(wù)要求,反正只要有要求來(lái)的時(shí)候,通常就是各式各樣的 daemons 負(fù)責(zé)去喚起應(yīng)該要工作的 Servers 來(lái)工作啦!那么 daemons 目前有兩種基本的模式,分別是 stand_alone 與 super daemon 兩種方式,底下就來(lái)說(shuō)一說(shuō)這兩種 daemon 的工作型態(tài):
• stand_alone : 就字面上的意思來(lái)說(shuō),stand alone 就是『獨(dú)立的啟動(dòng)』的意思,也就是說(shuō),該 daemon 啟動(dòng)之后,就直接常駐在內(nèi)存當(dāng)中啰!他雖然會(huì)一直的占用系統(tǒng)的資源,但最大的優(yōu)點(diǎn)就是,他會(huì)一直啟動(dòng)的啦!所以當(dāng)有要求來(lái)的時(shí)候,他就會(huì)很快速的響應(yīng)啰!常常用在這一種 daemon 的網(wǎng)絡(luò)服務(wù)如常見的 httpd 這一個(gè)即是一例!
•super daemon : 相對(duì)于 stand alone 的執(zhí)行方式,這一種服務(wù)的啟動(dòng)方式則是藉由統(tǒng)一的一個(gè) daemon 來(lái)負(fù)責(zé)喚起該服務(wù)!這一個(gè)統(tǒng)一負(fù)責(zé)的 daemon 就是 inet 這支服務(wù)啦!不過(guò),在后來(lái)的 Linux 發(fā)展套件中,則是使用 xinet 這個(gè)設(shè)定啰!我們這里以 Mandrake 的 xinet 來(lái)做說(shuō)明。當(dāng)有網(wǎng)絡(luò)的服務(wù)要求來(lái)的時(shí)候,該要求會(huì)先送給 xinet 這個(gè)服務(wù),然后 xinet 根據(jù)該網(wǎng)絡(luò)要求送來(lái)的數(shù)據(jù)封包的內(nèi)容 ( 該內(nèi)容會(huì)記錄 IP 與 port ) 來(lái)將數(shù)據(jù)封包送給實(shí)際運(yùn)作的服務(wù)!而該服務(wù)這個(gè)時(shí)候才會(huì)啟動(dòng)的!最常見到的就是 ftp 這支網(wǎng)絡(luò)服務(wù)啦!這種最大的優(yōu)點(diǎn)就是當(dāng)沒有數(shù)據(jù)封包來(lái)的時(shí)候,該服務(wù)不會(huì)一直占據(jù)系統(tǒng)資源 ( 該服務(wù)會(huì)在 sleeping 的狀態(tài)吧! ) ,但是相對(duì)的,他的反應(yīng)時(shí)間也會(huì)比較慢,因?yàn)檫要花費(fèi)一段時(shí)間去『?jiǎn)拘选辉摲⻊?wù)呀!
那么這兩種啟動(dòng)的方式哪一個(gè)比較好呢?見仁見智啦!而且還要看該主機(jī)的工作負(fù)荷與實(shí)際的用途說(shuō)!例如當(dāng)你的主機(jī)是用來(lái)作為 WWW 服務(wù)器的,那么 httpd 自然就以 stand alone 的啟動(dòng)方式較佳!事實(shí)上,我們常常開玩笑的說(shuō)明 stand alone 與 super daemon 的情況,可以銀行的窗口來(lái)作為說(shuō)明的范例!
•stand alone : 在銀行里面,假設(shè)有一種單一服務(wù)的窗口,例如存錢窗口,所以,當(dāng)你需要存錢的時(shí)候,直接前往該窗口,就有『專人』為您服務(wù)啦!
•super daemon : 在銀行里面假設(shè)還有另外一種復(fù)合型態(tài)的窗口,同時(shí)提供轉(zhuǎn)帳、資金調(diào)度、提款等等的業(yè)務(wù),那當(dāng)你需要其中一項(xiàng)業(yè)務(wù)的時(shí)候,就需要前往該窗口,但是坐在窗口的這個(gè)營(yíng)業(yè)員,拿到你的需求單之后,往后面一丟『喂!那個(gè)轉(zhuǎn)帳的仁兄!該你的工作了』那么那個(gè)仁兄就開始工作去!然而里頭還有資金調(diào)度與提款等負(fù)責(zé)業(yè)務(wù)的仁兄呢?他們?cè)诟陕铮亢俸!看看?bào)、喝喝茶啰!那么這里就會(huì)引出另外一個(gè)問題啦!假設(shè)銀行今天的人潮特別的洶涌,所以這個(gè)窗口后面除了你之外還有很多的人!那么想一想,這個(gè)窗口是要『一個(gè)完成再來(lái)下一個(gè)』還是『全部都把你們的單據(jù)拿來(lái),我全部處理掉』呢?呵呵!是不是不太一樣?
omulti-threaded:就是我們提到的,全部的客戶之要求都給他拿來(lái),一次給他交辦下去,所以一個(gè)服務(wù)同時(shí)會(huì)負(fù)責(zé)好幾個(gè)程序。
osingle-threaded:這個(gè)就是目前我們『人類的銀行』最常見的方式啦,不論如何,反正一個(gè)一個(gè)來(lái),第一個(gè)沒有處理完之前,后面的請(qǐng)排隊(duì)!嘿嘿!所以如果 client 的要求突然大增的話,那么這些晚到的 client 可得等上一等!
另外,需要注意的是,既然銀行里頭有這兩種窗口同時(shí)存在,所以啰,在 Linux 系統(tǒng)里面,這兩種 daemon 是可以同時(shí)存在的啦!也就是說(shuō),某些服務(wù)可以使用 stand alone 來(lái)啟動(dòng),而有其它的服務(wù)則可以使用 xinet ( 或者是 inet ) 大致的情況就是這樣啦!了呼。
1、•/etc/services
OOK!這個(gè)時(shí)候就又發(fā)生了另一個(gè)問題啰!那么我怎么知道要將我的數(shù)據(jù)送到那個(gè)窗口去!咦!那個(gè)窗口不是有寫說(shuō)明說(shuō)他是干嘛用的嗎?所以你要存錢、轉(zhuǎn)帳、或者是進(jìn)行匯款,都可以在不同的窗口來(lái)完成,那么換到實(shí)際的網(wǎng)絡(luò)情況來(lái)說(shuō)呢,因?yàn)槲覀兊?TCP 封包里面含有 port 與 IP 對(duì)吧!將那些已經(jīng)監(jiān)聽的 port 想成是這些窗口,如此一來(lái)你的 TCP 封包便可以依據(jù)不同的需求,而到達(dá)不一樣的 port 來(lái)索取服務(wù)了!因此,你的聯(lián)機(jī)是 FTP, WWW, smtp 等等都好,絕對(duì)不會(huì)被搞錯(cuò)啦!
好了,如果我想要知道這個(gè) port 是由那個(gè)服務(wù)所啟動(dòng)的呢?在 Linux 系統(tǒng)里面有個(gè)檔案在說(shuō)明那個(gè)窗口與服務(wù)的 ( services and ports ) 對(duì)應(yīng)!呵呵!那就是鼎鼎大名的 /etc/services 這個(gè)檔案啦!我們?nèi)∫欢纬3?吹降?port 與相關(guān)服務(wù)的區(qū)段來(lái)看一下好了!
[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 name>; <port 與型態(tài)>; < 該服務(wù)的說(shuō)明 >;
•
像上面說(shuō)的是,第一欄為 daemon 的名稱、第二欄為該 daemon 所使用的 port 號(hào)碼與其網(wǎng)絡(luò)數(shù)據(jù)封包傳送時(shí)候的類型,主要為較穩(wěn)定的 tcp 封包與較易破損但較快速之 udp 封包!舉個(gè)例子說(shuō),那個(gè) e-mail 的發(fā)信協(xié)議為 smtp 這個(gè)服務(wù),而這個(gè)服務(wù)的使用之 port 即為 25 啦!就這樣!
o請(qǐng)?zhí)貏e注意!雖然有的時(shí)候您可以藉由修改 /etc/services 來(lái)更改一個(gè)服務(wù)的 port 號(hào),不過(guò)并不建議如此做,因?yàn)楹苡锌赡軙?huì)造成一些協(xié)議的錯(cuò)誤情況!這里特此說(shuō)明一番呦。ǔ悄茉O(shè)一個(gè)地下網(wǎng)站,否則的話,使用 /etc/services 原先的設(shè)定就好啦!)
2、•Daemon 的命名規(guī)則:
每一個(gè)服務(wù)的開發(fā)者,當(dāng)初在開發(fā)他們的服務(wù)時(shí),都有特別的故事啦!不過(guò),無(wú)論如何,這些服務(wù)的名稱被建立之后,被掛上 Linux 使用時(shí),通常在服務(wù)的名稱之后會(huì)加上一個(gè) d ,例如例行性命令的建立的 at, 與 cron 這兩個(gè)服務(wù),通常會(huì)被稱為 atd 與 crond,這個(gè) d 代表的就是 daemon 的意思。所以,在資源管理那一章中,我們使用了 ps 與 top 來(lái)觀察程序時(shí),都會(huì)發(fā)現(xiàn)到很多的 xxxd 的程序,呵呵!通常那就是一些 daemon 的程序啰! |
|