1、服務的介紹
計算機中的服務是一種能執行指定系統功能的程式,在系統後臺執行。
服務應用程式通常可以在本地和通過網路為使用者提供一些功能,每個程式都有一定的或者說是特定的功能,它所提供的所能實現的未必是你直接需要的,有的是以便支援其他的程式,尤其是低層(接近硬體)的程式。
這些服務可以在計算機啟動時自動啟動,可以暫停和重新啟動,而且不顯示任何使用者介面。
2、Windows系統中的服務
(1)如何檢視Windows系統中的服務。
我們先來看看Windows系統中的服務.
我的電腦 —> 右鍵 —> 點選管理,如下圖所示:
在出現的介面中選擇 服務和應用程式 —> 服務,就可以看到Windows系統中已經安裝好的所有服務。
Windows系統是圖形化介面,相對於Linux系統,更好理解和觀察一些。
(2)檢視服務的狀態和啟動型別。
我們隨便雙擊一個服務,會出現如下介面:
說明:
- 服務狀態分為:啟動、停止、暫停、恢復。
- 啟動型別分為:手動、自動、自動(延遲自動)、禁用。
(3)服務的狀態和啟動型別的區別。
1)服務啟動型別
服務啟動型別定義的是你下一次開機的時候,該服務是否會隨著系統一起啟動。也稱為服務的自啟動選項。
- 兩個自動都是開機後,服務自己就啟動。
- 手動是Windows系統特有的啟動型別,Linux系統是沒有的,說的是開機之後,該服務不啟動,在之後的系統執行中,有其他程式呼叫該服務,可以不經過管理員同意,該服務會啟動起來。
- 禁用代表開機之後,該服務不執行。
說明:
- 手動啟動型別對於Linux系統來說是不可能的,Windows系統之所以這樣設計是為了簡單(與其跟你講道理,還不如我幫你做了),優點是使用起來方便簡單,缺點是很多事情都不是你說的算。
- Windows系統幫你做了很多的決定,這樣也提升了相應的風險。
- 而Linux系統設計的核心原則是管理員許可權最大,所有事情都是管理員說的算,管理員如果不同意,這個事情就不能執行。
- 所以Linux系統中不會有手動啟動型別,這是違背Linux系統設計核心原則的。
2)服務狀態
服務狀態是在當前系統下,該服務當前的狀態。啟動就是該服務現在是執行狀態,未啟動就是未啟動狀態,也稱為服務的啟動選項。
3)總結:
- Windows系統和Linux系統中的服務,都會有自啟動和啟動兩種啟動方式。
- 優化伺服器的時候,服務優化是系統優化的重要策略之一。關閉那些用不到的服務,服務啟動的越少,系統資源佔用的就越少,被人攻擊的概率也越小。
3、Linux系統中服務的分類
在Linux系統中,服務的安裝方式不同(rpm包還是原始碼包),該服務的啟動與自啟動方法都是有區別的。
所以在Linux系統中,服務分為兩大類:RPM
包安裝的服務和原始碼包安裝的服務。
其中RPM包安裝的服務
又分為:獨立的服務和基於xinetd
服務(超級守護程式)。
總結如下圖:
說明:
通過RPM包安裝的服務我們是用
service
命令啟動,我們可以把原始碼包安裝的服務的啟動方式修改成和RPM包安裝的服務啟動方式一樣,就是把通過原始碼包安裝的服務的啟動命令加入到service
命令當中,進行服務的啟動。但是不推薦這樣做,原因:
對初學者來說,服務的啟動方法和安裝位置,是區分該服務是通過原始碼包安裝還是通過RPM包安裝的重要方式。如果你進行修改了,你很難分清楚該服務是哪種方式安裝的。
4、獨立的服務和基於xinetd服務的區別
(1)兩者區別。
上邊說了RPM
包安裝的服務又分為:獨立的服務和基於xinetd
服務,這兩者的區別:
- 獨立的服務:
就是獨立啟動的意思,這型別的服務可以自行啟動,而不用依賴其他的管理服務。不依賴其他管理服務,那麼當客戶端請求訪問時,獨立的服務直接執行在記憶體中,響應請求更快速。
Linux中目前大多數服務都是獨立的服務,比如Apache服務,FTP服務,Samba服務等。 - 基於
xinetd
的服務:
這種服務就不能獨立啟動了,而是要依靠管理服務來呼叫這種服務。這個負責管理的服務就是xinetd
服務,xinetd
服務是系統的超級守護程式,直接執行在系統記憶體中。xinetd
服務的作用就是管理不能獨立啟動的服務,當有客戶端請求時,先請求xinetd
服務,由xinetd
服務去喚醒相對應的服務。當客戶端請求結束後,被喚醒的服務會關閉並釋放資源。這樣做的好處是隻需要持續啟動xinetd
服務,而其他基於xinetd
的服務只有在需要時才啟動,不會佔用過的的伺服器資源。但是這種服務由於在有客戶端請求時才會被喚醒,所以相應時間相對較慢。
(2)優缺點。
- 呼叫獨立的服務,直接呼叫記憶體中的服務即可,響應快,效率高。
xinetd
服務的缺點是,響應速度慢些,響應效率差。
出現基於xinetd
的服務,主要的目的就是節約記憶體,節約資源。
總結(重點):
現在我們的計算機的硬體基礎發展的很快,記憶體或者其他的硬體資源都很充裕,Linux認為基於
xinetd
的服務作用不大了。xinetd
服務的好處越來越小,反而會影響使用效果,所以現在Linux中基於xinetd
的服務越來越少,甚至Linux系統預設都沒有安裝xinetd
服務。
5、如何檢視一個服務是獨立的服務還是基於xinetd的服務
RPM包方式安裝的服務,如何區分是獨立的服務和基於xinetd
的服務。
使用命令chkconfig
,chkconfig
命令是用來更新、查詢、修改不同執行級上的系統服務。
(1)檢視系統中獨立的服務
使用chkconfig --list
查詢服務的執行級別。
[root@localhost ~]# chkconfig --list
選項:
-list:列出所有RPM預設安裝服務的自啟動狀態
注意:查詢的是RPM包的預設安裝服務的自啟動狀態,也就是重啟計算機之後是否啟動配置。並不是現在該服務是否被啟動。
如下圖:
我們之前講過的系統執行級別0-6
,0
代表關機,6
代表重啟等。
這些能看到0-6
系統執行級別的服務,都是系統中獨立的服務。
如果需要了解Linux系統執行級別請看這篇文章。
(2)檢視系統中基於xinetd的服務
上面說了,現在我們安裝的Linxu系統中,預設是不安裝xinetd
服務的,沒有xinetd
服務也就沒有基於xinetd
的服務。
如果我們要檢視系統中有哪些基於xinetd
的服務,我們要先安裝一下xinetd
服務。
執行命令:yum -y install xinetd
如下圖所示:
然後在執行chkconfig --list
命令,就可以看到xinetd
服務都有什麼了。
如下圖所示: