什麼是守護進程與服務

什麼是守護進程與服務

守護進程(daemon),程序有的是在bash中執行程序觸發的,也有開機的時候系統自行觸發而在後臺執行的,守護進程就是一個在後臺中執行的程序,一般負責系統上的某個服務,讓系統接受來自用戶或者是網絡客戶的要求。linux

守護進程的主要分類

獨立啓動

啓動後直接常駐內存,一直佔用系統資源,當有要求時,會很快相應,如常見的守護進程httpd。 shell

例子:銀行裏,有一種單一的服務窗口,如存錢窗口,直接去該窗口,有專人服務。bash

super daemon 超級守護進程

經過統一的守護進程來負責喚起服務,統一負責的守護程序就是inet服務。根據網絡要求送來的數據包的內容,將數據包送到實際運行的服務,而該服務此時纔會啓動,最多見的就是ftp網絡服務。當沒有數據包來的時候,該服務不會一直佔用系統資源,處於睡眠狀態,反應時間也會比較慢。 網絡

例子:銀行裏有一種複合類型的窗口,同時提供裝轉,提款等業務,當你須要其中一項業務時,直接去改窗口,坐在窗口的工做人員會直接叫另一個專門負責的人處理你的食物。假設去的人多了,就會存在不少人排隊。那麼這種窗口是「當完成一個以後再辦理下一個」,仍是「把單據所有收齊,一塊兒處理呢」。多線程

  • 多線程

把全部的單據收集,而後一次交給窗口的工做人員,一個服務同事會負責好幾個程序tcp

  • 單線程

不管如何,一個一個來,第一個沒有處理完成以前,後面的情排隊。線程

若是守護進程以工做狀態來區分,能夠氛圍一下兩類設計

單獨控制

經過信號來管理,只要有任何要求,就當即啓動去處理,如打印服務cupsd。rest

間隔控制

每隔一段時間就主動去執行某項工做,須要某個工做點纔會去工做,好比atd,cron就是如何。code

與服務有關的端口信息:/etc/service

在linux系統上,不一樣的網絡服務有不同的監聽端口,能夠經過指定指向主機的某個端口來鏈接想要的服務,這些通訊協議使用的端口是固定的,也是公認的標準端口號,在/etc/services中。

...
rtmp              1/ddp    #Routing Table Maintenance Protocol
tcpmux            1/udp     # TCP Port Service Multiplexer
tcpmux            1/tcp     # TCP Port Service Multiplexer
...
第1欄爲守護程序的名稱,第2欄爲該守護程序所用的端口號與其網絡數據報傳送的類型。
主要爲聯機後才進行數據傳輸的可靠TCP包,速度較快可是不肯定較高的UDP包等。

守護程序的命名規則

不管如何,服務掛上linux使用時,一般在服務名稱以後加上一個d。 如atd,crond。守護程序的shell腳本放置的地方是根據獨立啓動守護程序仍是超級守護程序而有所不一樣。

  • 獨立啓動守護程序

放在/etc/init.d裏面,幾乎全部的RPM安裝的套件啓動腳本都在這裏。

  • 超級守護程序

便是xinet或者inet。xinet也是一個守護程序,它是獨立啓動的,也就是會一直監聽需求。掛在這個守護程序裏面的服務設置項目寫在/etc/xinetd.conf與/etc/xinetd.d/*目錄的任何文件中。

獨立啓動的守護程序啓動。

/etc/init.d/syslog start
service syslog start

service是一個程序,基本上,也只是用來啓動/etc/init.d/下的shell腳本而已。服務都是以bash腳本里的case語法寫成的。

守護程序的啓動方式:service

啓動守護程序,就要找到它的執行文件,各個主要的linux腳本都會針對服務,設計一個友好的shell腳原本啓動,那就是/etc/init.d/下的文件。

/etc/init.d/syslog start

除了以上方式外,還能夠經過Fedora(Red Hat系統)所提供的service程序來進行守護進程的啓動,service是一個程序,基本上,也只是用來啓動/etc/init.d/下的shell腳本。

service [service name] (start|stop|restart...)

事實上,開或者關某個端口,就是須要啓動或者關閉某項服務。

相關文章
相關標籤/搜索