linux的服務分為哪兩大類

2022-04-12 19:00:17

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其它相關文章!