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的就表示該服務已開啟,所以我們的啟動方式是:
1、先編輯啟動腳本,將需要開啟的服務disable一項改為no
2、然後重啟xinetd:/etc/init.d/xintd restart【因為xinetd本身就是stand-alone的服務】
相關推薦:《
以上是linux的服務分為哪兩大類的詳細內容。更多資訊請關注PHP中文網其他相關文章!