一、Linux系統的服務簡介
????????服務是向外部提供對應功能的進程,其運行在系統后臺,能夠7*24小時持續不斷的提供外界隨時發來的服務請求,且服務進程常駐在內存中,具有固定的端口號,通過端口號就能找到服務內容。
????????提供服務的一端叫做服務端,向服務端發送請求內容的叫做客戶端,具體的流程為:
1、首先服務器端啟動服務進程,服務進程正常運行后會開放對應的固定端口號(比如80、8080、5000等端口);
2、然后客戶端向服務端對應的(IP:服務端口)發起請求;
3、服務端所在主機的內核接收到客戶發送來的請求數據包,系統內核會分析數據包內容(識別請求的端口號后,內核會對應到該該端口號對應的服務程序,系統內核會將客戶端發送來的請求報文內容發送給對應的服務程序,服務程序收到報文后,就會與客戶端建立連接處理對應的內容,并進行數據傳輸工作。
????????在Linux中,服務分為【獨立守護進程】和超【級守護進程(瞬時守護進程)】;獨立守護進程是指(自行在后臺實時監聽客戶端發送來的請求內容并進行處理,基本上所有的服務都是獨立守護進程類的服務)。超級守護進程是專指xinetd這個服務,這個服務代為管理著一些特殊的系統服務,這類服務只有在被請求的時候才會由xinetd通知它啟動對應服務,服務提供處理工作完成后就關閉服務,這類服務稱為瞬時守護進程,即存在的時間非常短暫。
????????簡單的說【服務是類指那些在系統后臺持續運行并提供基本功能,常駐內存中(如網絡連接、SSH登錄、日志管理等功能)的程序】。
二、Linux服務的常用操作_Centos7及其更高版本
2.1、列出Linux所有服務和狀態
1、查看Linux系統中的所有服務
systemctl list-units --type service --all
2、查看Linux系統所有服務的開機自啟動狀態命令:
systemctl list-unit-files
3、查看所有已經激活的服務命令
systemctl list-units --type service
2.2、查看服務狀態
????????比如我這里查看httpd服務狀態,其中狀態(Active:active(running)表示已經啟動運行中);Active:inactive(dead)表示停止):?
systemctl status 服務名稱
systemctl status 服務名稱.service
查看服務是否在運行中命令:
systemctl is-active 服務名稱
2.3、啟動服務
systemctl start 服務名稱
????????比如我這里重啟httpd服務,且查看啟動后的狀態(Active:active(running)表示已經啟動運行中):??
systemctl start 服務名稱.service
2.4、停止服務
systemctl stop 服務名稱
????????比如我這里停止httpd服務,且查看停止后的狀態(Active:inactive(dead)表示停止):??
systemctl stop 服務名稱.service
2.5、重啟服務
systemctl restart 服務名稱
????????比如我這里重啟httpd服務,且查看重啟后的狀態(Active:active(running)表示已經啟動運行中):?
systemctl restart 服務名稱.service
2.6、設置服務開機自啟
systemctl enable 服務名稱
systemctl enable 服務名稱.service
任選這2個命令中的一個就可以;需要注意的是:設置服務開啟自啟后如果要驗證的話,需要重啟服務器后再查看服務狀態為?(Active:active(running))即為設置服務開機自啟成功。
如下是立即重啟Linux服務器的命令:?
reboot -h now
查看服務是否開機自動啟動(enabled表示已經啟動)?
systemctl is-enabled 服務名稱
2.7、禁用服務開機自啟
systemctl disable httpd
systemctl disable 服務名稱.service
任選這2個命令中的一個就可以;需要注意的是:禁用服務開啟自啟后如果要驗證的話,需要重啟服務器后再查看服務狀態為?(Active:inactive(dead)表示停止)即為禁用服務開機自啟成功。
?
三、服務的配置文件
????????對于支持 systemd 的程序,在安裝該軟件的時候,會自動的在 【/usr/lib/systemd/system
?】目錄添加一個關于該程序的服務配置文件(比如:我使用【yum install httpd -y】安裝了該程序,我們可以使用【cat /usr/lib/systemd/system/httpd.service】命令查看到該程序的服務配置文件內容),如下圖所示:
在我們給httpd服務設置了開機自啟【systemctl enable httpd】命令后,可以看到在【/etc/systemd/system/multi-user.target.wants/】 目錄下添加了該程序的符號鏈接,這個鏈接指向【/usr/lib/systemd/system
?】里面的【httpd.service】文件
在設置了服務的開機啟動命令后,需要等下一次開機的時候,才會自動行 【/etc/systemd/system/
】?目錄中的文件服務;可以通過【systemctl is-enabled httpd】命令查看服務是否設置開機自動啟動,如下圖所示:
注意:【/etc/systemd/system/】
是管理員根據需求建立的執行腳本,也可以理解為是【/usr/lib/systemd/system/】
的連接映射。
3.1、systemctl
????????在 Centos7 之前是使用 service 進行服務的管理,雖然service使用起來簡單,但對于每一個服務,都需要我們人為手動的編寫對應腳本文件來控制服務相關的啟動、停止、重啟等操作,服務控制得好壞,完全依賴于編寫腳本的人,這樣的話對于服務來說不是很穩定,對于管理服務的人員也不友好。
????????為了解決service帶來的服務不穩定,對管理服務人員不友好等問題,在 Centos7 中采用了新的【systemctl】服務管理工具,systemctl使用固定規范格式的腳本內容來控制服務的啟動、停止等相關操作,使得服務的管理變得簡單了很多(即:對服務的啟動、停止、重啟、開機自啟等操作只需要一條命令就可實現)
?3.2、systemd
面向管理員的 systemd,第 III 部分 (0pointer.de)https://0pointer.de/blog/projects/systemd-for-admins-3.htmlsystemd.unit (0pointer.de)
https://0pointer.de/public/systemd-man/systemd.unit.htmlsystemd.service (0pointer.de)
https://0pointer.de/public/systemd-man/systemd.service.html
systemd 基礎知識簡介 (suse.com)https://documentation.suse.com/smart/systems-management/html/systemd-basics/index.html
?
?
?
?