【講清楚,說明白!】服務管理

目錄:
(一)瞭解服務的概念
(二)服務器狀態查看、啓動、關閉、重啓
(三)設置服務開機自動啓動
(四)服務是如何定義的
(五)運行級別:瞭解後綴爲target的服務


(一)瞭解服務的概念
(1.1)首先我們看一下Windows系統中的服務,例如系統中的DHCP Client服務,其中“狀態”指的是當前的狀態,而當前狀態我們可以選擇“啓動、停止、暫停、恢復、重新啓動”;即使我們設置當前的狀態爲“停止”,但是在系統重新啓動後仍然是會成爲“已開啓”的狀態,這是由於在“啓動類型”處,我們設置的是“自動”啓動類型,因此啓動類型不會影響當前系統的狀態,只會影響系統下次重啓系統時的狀態。
【講清楚,說明白!】服務管理


(二)服務器狀態查看、啓動、關閉、重啓
(2.1)而在Linux系統中,我們可以使用systemctl命令查詢系統中所有的服務信息(圖1-2),在Linux系統中類似於Windows系統中的服務都是以後綴爲service的服務(圖1-3)。
# systemctl list-unit-files---查詢系統中所有的服務
# systemctl list-unit-files --type service---查詢所有類型爲service的服務
【講清楚,說明白!】服務管理
【講清楚,說明白!】服務管理
(2.2)我們首先查詢系統中是否有ftp、sshd服務,可以使用list-unit-files參數確定服務的具體名稱。然後可以查詢sshd服務是否是正常運行的狀態,接着可以對服務進行一系列停止、啓動、重啓的操作,但是當前的操作都只是對系統的當前狀態進行的,如果系統重啓後,當前的設置都會默認到系統原始的狀態。
# systemctl list-unit-files --type service |grep ftp---查詢系統中是否有ftp服務
# systemctl list-unit-files --type service | grep ssh---查詢系統中是否有ssh服務
# systemctl is-active sshd---查詢sshd服務是否正常運行
# systemctl stop sshd.service---關閉sshd服務運行
# systemctl start sshd---將sshd服務啓動起來
# systemctl restart sshd.service---將sshd服務重啓一下
【講清楚,說明白!】服務管理


(三)設置服務開機自動啓動
(3.1)如果我們現在希望系統的sshd服務在開機後能夠自動啓動,我們可以使用如下的方式進行設置。
# systemctl is-enabled sshd.service---查詢sshd服務是否設置了開機自動啓動
# systemctl disable sshd.service---設置sshd服務開機不會自動啓動
# systemctl enable sshd.service---設置sshd服務開機能夠自動啓動
【講清楚,說明白!】服務管理
(3.2)如果我們想將一個服務設置爲“禁用”的模式,則可以使用mask命令設置服務是否爲禁用的狀態。
# systemctl mask sshd---將sshd服務設置爲“禁用”模式
# systemctl is-active sshd.service---查詢當前sshd服務的狀態
# systemctl stop sshd---將sshd服務停止
# systemctl start sshd---此時發現無法正常的啓動sshd服務了
# systemctl unmask sshd.service---解除sshd服務的“禁用”模式
【講清楚,說明白!】服務管理
(3.3)如果我們想查看服務的狀態時,可以使用status參數查看服務的狀態信息。
# systemctl status sshd---查詢系統中sshd服務的狀態
# systemctl status sshd -l---查詢系統中sshd服務的狀態,以及更詳細的信息
【講清楚,說明白!】服務管理


(四)服務是如何定義的
(4.1)現在我們希望自己能夠定義一個服務memload,我們首先將memload-7.0-1.r29766.x86_64.rpm軟件下載到vms002主機上(圖4-1),接着我們將memload軟件包安裝起來,此時我們發現在/usr/local/bin/目錄下存在一個memload文件(圖4-2)。
【講清楚,說明白!】服務管理
【講清楚,說明白!】服務管理
(4.2)接着我們在vms002主機上創建一個memload.service的文件,同時在文件中指明,如果開啓服務,會指定消耗的內存空間,如果停止服務的時候,會執行殺死memload進程的操作(圖4-3)。然後我們將memload.service配置文件考本到/usr/lib/systemd/system/目錄中,此時我們在系統中便會發現已經有memload.service服務生成了(圖4-4)。此時我們將memload服務運行起來後發現自定義的服務啓動後,系統的used部分的內存使用量確實增加了1G左右(圖4-5)。自定義服務,定製服務
# systemctl start memload---將自定義的服務memload啓動
# ps aux | grep -v grep | grep memload---我們查詢系統是否有memload服務在運行
【講清楚,說明白!】服務管理
【講清楚,說明白!】服務管理
【講清楚,說明白!】服務管理
(4.3)然後我們將memload服務停止後,發現此時系統的used使用空間又恢復到了最開始沒有沒消耗1G內存的狀態了。
# systemctl stop memload.service---將memload服務停止運行
# ps aux | grep -v grep | grep memload---我們查詢系統是否有memload服務在運行
# free -m---查詢系統的內存空間使用情況
注意:經驗總結# ps axj | more---可以查詢後臺所有守護進程的情況daemon,後臺守護進程,後臺進程
【講清楚,說明白!】服務管理
(4.4)當我們啓動一個服務的時候,則在後臺會啓動一個命令,這個命令我們稱之爲守護進程daemon,服務就是一個文件來管理daemon。如果有時候我們想要查看某個daemon的配置文件的位置,可以使用status參數(圖4-7),此時我們便可以看到sshd.service配置文件中關於ExecStart和ExecReload的配置信息(圖4-8)。
# systemctl status sshd---查詢sshd服務的狀態
【講清楚,說明白!】服務管理
【講清楚,說明白!】服務管理
(4.5)如果我們需要查詢一個服務配置文件的路徑時,可以使用which命令即可,便可以查詢到服務執行的命令的可執行文件的位置了。
# which sshd---查詢出sshd服務具體執行的命令的路徑
# cat /usr/lib/systemd/system/sshd.service
【講清楚,說明白!】服務管理


(五)運行級別:瞭解後綴爲target的服務
(5.1)一般我們在系統中使用tab鍵時可以進行命令的快速索引的,而我們如果使用最小化安裝系統的時候會發現無法使用快速索引的功能,此時我們應該安裝bash-completion.noarch這個軟件包,然後將系統重啓一下,此時我們便又可以使用tab命令快速索引的功能了。自動補全,自動補齊
# yum install bash-completion.noarch -y
【講清楚,說明白!】服務管理
(5.2)在我們系統中有很多類型的服務,例如有後綴爲service的服務,也有後綴爲socket的服務,還有後綴爲mount的服務,我們現在來關注的是後綴爲target的服務。
# systemctl list-unit-files --type target---查詢後綴爲target的服務
【講清楚,說明白!】服務管理
(5.3)所謂target的服務,實際上類似於RHEL 6所說的運行級別的概念。我們在開機後經過了BIOS加電自檢-->GRUB引導程序-->內核初始化,此時會讀取/etc/fstab文件中的內容,掛載各個設備,同時啓動各個服務。此時在我們的系統中是存在多個選擇的,例如我們有0-6一共7個服務可供選擇,假設A、B、C、D代表的是系統普通服務,X代表的是圖形化界面服務。例如我們現在想要運行rc5.d服務,此時系統啓動起來後,我們系統中就會有ABDX服務在運行了。如果我們現在已經在rc5.d的級別運行了,此時我們希望能夠切換到rc3.d的級別運行,那麼系統需要做的是將當前運行的ADX服務關閉,然後將沒有運行的C服務開啓,此時我們系統就進入了rc3.d的運行級別了。一般系統默認的運行級別是rc5.d,它是在/etc/inittab文件的最後一行定義的。
【講清楚,說明白!】服務管理
(5.4)在RHEL 6系統中,對於運行級別我們一般做如下的定義,其中rc0.d表示的是“關機”;rc1.d表示的是“單用戶模式”或“救援模式”;rc2.d表示的是“命令行”模式,但是不能使用nfs;rc3.d表示的是“全模式”即所有功能都可以使用,但是隻在字符界面操作;rc4.d屬於未分配的模式;rc5.d表示是“全模式”,同時是圖形化的操作界面;rc6.d表示的是“重啓”。我們使用runlevel命令就可以查看當前系統是屬於哪個運行級別,如果我們想關機可以執行init 0,如果我們想重啓系統則可以執行init 6
# runlevel---查看系統的運行級別
# init 6---重啓系統
【講清楚,說明白!】服務管理
(5.5)在RHEL 7系統中我們所看到後綴爲target的服務其實就是運行級別。其中RHEL 7系統的各個運行級別和RHEL 6系統運行級別的對比如下圖所示。默認情況下我們的系統啓動後的運行級別爲“runlevel5.target”或“graphical.target”即圖形化界面的模式,我們可以通過get-default命令查看系統的默認級別。
# systemctl get-default---查詢系統的默認級別
【講清楚,說明白!】服務管理
【講清楚,說明白!】服務管理
(5.6)如果我們希望將當前的運行級別臨時切換爲多用戶字符命令模式,則可以使用isolate命令(圖5-7),臨時切換系統的運行級別爲字符界面多用戶模式,此時我們發現此時系統當前的運行級別已經是3級別了(圖5-8)。
# systemctl isolate multi-user.target---臨時切換系統的運行級別爲字符界面多用戶模式
【講清楚,說明白!】服務管理
【講清楚,說明白!】服務管理
(5.7)現在我們在字符界面輸入startx命令後便進入了圖形化的界面了,此時我們發現雖然是圖形化界面,但是系統的運行級別仍然是3即多用戶字符界面的模式。由於我們在(5.6)的操作步驟中已經將當前系統的運行級別臨時設置爲3了,所以此時3的運行級別下默認是不啓用X服務的,但是我們是可以單獨額外的啓動X服務。如果我們想要切換到圖形化界面運行,則可以使用isolate命令臨時設置當前的狀態爲graphical.target模式。
【講清楚,說明白!】服務管理
【講清楚,說明白!】服務管理
(5.8)注意在RHEL 6系統中如果我們是屬於運行級別5圖形化界面,然後我們使用Ctrl+alt+F2進入到字符界面後,此時我們在字符界面執行startx命令,是無法正常的執行成功的,執行後產生了衝突,系統會認爲我現在已經是在運行級別5的,而且已經能執行一個startx的服務,不能在執行第二個同樣的服務的。
(5.9)我們在vms002主機的系統中默認的運行級別是graphical.target,如果我們希望更改系統默認的運行級別,則應該使用set-default命令,此時我們便可以使得系統默認的運行級別爲multi-user.target了(圖5-11)。此時的設置並不會影響系統當前的狀態,我們發現系統的當前狀態仍然爲graphical.target圖形化界面,而重啓系統主要可以通過圖5-12的四種方法進行。
# systemctl get-default---查詢系統當前的默認運行級別
# systemctl set-default multi-user.target---修改系統默認的運行級別爲multi-user.target
# reboot---重啓系統方法1
# init 6---重啓系統方法2
# systemctl isolate reboot.target---重啓系統方法3
# systemctl isolate runlevel6.target---重啓系統方法4
【講清楚,說明白!】服務管理
【講清楚,說明白!】服務管理
(5.10)重啓系統後,此時我們默認是進入到了命令行字符的界面,然後我們使用isolate命令設置登錄圖形化界面graphical.target(圖5-13),此時我們發現系統的默認運行級別仍然設置的爲multi-user.target,所以即使系統再次重啓也仍然是進入命令行字符界面(圖5-14)。
# systemctl isolate graphical.target---臨時切換登錄到圖形化的界面
【講清楚,說明白!】服務管理
【講清楚,說明白!】服務管理
(5.11)我們希望查看圖形化界面的服務是在哪裏定義的,我們可以使用systemctl status命令進行查詢(圖5-15),然後我們便可以在/usr/lib/systemd/system/目錄中找到graphical.target服務的配置文件並查看配置文件的詳細信息(圖5-16和圖5-17)。
# systemctl status vsftpd---查詢vsftpd服務的狀態
# cd /usr/lib/systemd/system/
# vim graphical.target
【講清楚,說明白!】服務管理
【講清楚,說明白!】服務管理
【講清楚,說明白!】服務管理

—————— 本文至此結束,感謝閱讀 ——————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章