linux的服務按管理方式分為「stand-alone」和「super-daemon」兩大類,也就是獨立管理服務和統一管理服務。獨立管理服務可以自行獨立啟動,無需通過其他機制的管理;而統一管理服務通過一個統一的daemon來負責啟動、管理。
本教學操作環境:CentOS6系統、Dell G3電腦。
Linux系統的服務,又稱為daemon,是指常駐在記憶體中持續執行,以提供所需服務(系統或網路服務)的程序。
Linux系統的服務按管理方式主要有兩大類:stand-alone和super-daemon,即獨立管理服務和統一管理服務。
stand-alone:這種型別的服務機制較為簡單,可以獨立啟動服務。其特點是:
1、可以自行獨立啟動,無需通過其他機制的管理
2、stand-alone服務一旦啟動載入到記憶體後,就會一直佔用記憶體空間和系統資源,知道該服務被停止。
3、由於服務一直在執行,所以對client的請求有更快的響應速度。典型的stand-alone服務有:httpd、和ftp
super-daemon:這種管理機制通過一個統一的daemon來負責啟動、管理其他服務。在 CentOS6.X 中這個super-daemon就是xinetd這個程式。特點有:
1、所有的服務由xinetd控管,因此對xinetd可以有安全控管的機制,如網路防火牆
2、clinet請求前,所需服務是未啟動的;直到client請求服務時,xinetd才會喚醒相應服務;一旦連線結束後,相應服務會被關閉。所以super-daemon方式不會一直佔用系統資源
3、既然有請求才會去啟動服務,所以server端的響應速度自然不如stand-alone方式來得快典型的super-daemon服務有:telnet等
Linux中的不同的服務都有不同的啟動指令碼,以在服務啟動前進行環境的檢測、組態檔的分析、PID檔案的規劃等相關操作。stand-alone方式和super-daemon方式的啟動指令碼放置位置有所不同,啟動方式自然也是有區別的。
stand-alone
啟動指令碼
stand-alone方式的啟動指令碼位於/etc/init.d/目錄下,事實上幾乎所有的服務啟動指令碼都在這裡。
[root@localhost init.d]# ls /etc/init.d/ abrt-ccpp htcacheclean ntpd smartd abrtd httpd ntpdate snmpd xinetd ......(省略)
你有沒有發現該目錄下不僅有httpd這些我們已知的stand-alone服務啟動指令碼,竟然還有xinetd!這說明什麼?
這說明xinetd這個服務其實也是使用stand-alone的管理方式。你想啊,因為xinetd要負責啟用停止許多super-daemon的服務,那它是不是得常駐記憶體~
啟動方法
方法一:由於所有的啟動指令碼都在/etc/init.d/裡了,所有直接呼叫不就好了!
[root@localhost init.d]# /etc/init.d/crond Usage: /etc/init.d/crond {start|stop|status|restart|condrestart|try-restart|reload|force-reload}
直接呼叫它會告訴你Usage,那
[root@localhost init.d]# /etc/init.d/crond restart Stopping crond: [ OK ] Starting crond: [ OK ]
就是這樣簡單啦!
方法二:還可以使用service這個指令碼:
[root@localhost init.d]# service crond status crond (pid 3278) is running...
這樣更簡單,不過service只能用來管理stand-alone的服務。
還有,這個用法可以檢視系統所有stand-alone服務的狀態 [root@localhost init.d]# service --status-all abrt-ccpp hook is installed abrtd (pid 2331) is running... abrt-dump-oops is stopped acpid (pid 1807) is running... ......(省略)
NOTE:鑑於service這個指令碼不是所有Linux發行版都有,所以還是建議使用/etc/init.d/* [action]的方式較好。還有助於理解原理~~~
super-daemon
啟動指令碼
super-daemon方式的啟動指令碼放在了/etc/xinetd.d/中。
[root@localhost xinetd.d]# ls /etc/xinetd.d/ chargen-dgram daytime-stream echo-dgram tcpmux-server time-stream ......(省略)
檢視 super-daemon方式啟動的服務有哪些:
方式一:使用chkconfig可以看到xinetd based services一項中服務的啟動情況:
[root@localhost xinetd.d]# chkconfig ...... xinetd based services: echo-dgram: off echo-stream: off rsync: off tcpmux-server: off telnet: on ......
方式二:直接檢視服務的啟動指令碼
[root@localhost xinetd.d]# grep -i 'disable' /etc/xinetd.d/* ...... /etc/xinetd.d/daytime-dgram: disable = yes /etc/xinetd.d/daytime-stream: disable = yes /etc/xinetd.d/discard-dgram: disable = yes /etc/xinetd.d/discard-stream: disable = yes /etc/xinetd.d/echo-dgram: disable = yes /etc/xinetd.d/telnet: disable = no ......
上面disable= no就表示該服務已開啟。
啟動方法
我們已經知道啟動指令碼中有一項disable= no的就表示該服務已開啟,所以我們的啟動方式就是:
1、先編輯啟動指令碼,將需要開啟的服務disable一項改為no
2、然後重新啟動xinetd:/etc/init.d/xintd restart【因為xinetd本身是stand-alone的服務】
相關推薦:《Linux視訊教學》
以上就是linux的服務分為哪兩大類的詳細內容,更多請關注TW511.COM其它相關文章!