linux基礎七之通過systemctl管理服務
阿新 • • 發佈:2021-01-12
從Ccentos7.x開始,傳統的init已經被捨棄,取而代之的是systemd。
什麼是daemon與service?
在Unix-like的相關係統,如果你經常上網檢視某些資料的話,應該常常看到“請啟動某個deamon來提供某某功能”,那麼daemon與service有關,否則怎麼會提供某些功能。簡單的說,系統為了某些功能必須要提供一些服務,這個服務就是service,但是service的提供總是需要程式的執行吧,所以完成這個service的程式就是daemon。
daemon既然是一個程式執行後的程序,那麼daemon所處的那個原本的程式通常是如何命名的呢,在linux使用中,通常在服務的名稱之後會加上一個d,例如atd,這個d就代表daemon的意思。
——————————————————————————————————————————————————————————————————————————————————————————
既然涉及到了一點init,那麼就簡單說一下init方式的服務的啟動,關閉與檢視等方式(現在基本都不用了,被捨棄!)
init所有服務的啟動指令碼放置於/etc/init.d/目錄下,基本上都是使用bash shell所寫成的指令碼程式,需要啟動,關閉,重新啟動,檢視狀態時,都可以通過如下方式來處理:
啟動:/etc/init.d/daemon start 關閉:/etc/init.d/daemon stop 重新啟動:/etc/init.d/daemon restart 檢視狀態:/etc/init.d/daemon status
—————————————————————————————————————————————————————————————————
system將過去所謂的daemon執行指令碼統統成為一個服務單位,而每種服務單位根據功能來區分時,就分為不同的型別,基本的型別包括:
~ 系統服務
~資料監聽與交換的socket檔案服務(socket)
~儲存系統狀態的快照型別
~提供不同類似執行級別分類的操作環境(target)
system的配置檔案放置目錄
> /usr/lib/systemd/system/ :每個服務最主要的啟動指令碼設定,有點類似以前的 /etc/init.d下的檔案
> /run/systemd/system/ :系統執行過程中所產生的服務指令碼,這些指令碼的優先順序要比 /usr/lib/systemd/system/ 高
> /etc/syetemd/syetem/ :管理員根據主機系統的需求所建立的執行指令碼,其實這個目錄有點像以前 /etc/rc.d/rc5.d/Sxx之類的功能,執行優先順序又比/run/systemd/system/ 要高
也就是說,到底作業系統啟動會不會執行某些服務其實是看/etc/systemd/system/下面的設定。
通過systemctl管理服務
基本上,systemd這個啟動服務的機制,主要是通過一個名為systemctl的命名來完成的。
通過systemctl掛你單一服務(service unit)的啟動/開機啟動/檢視狀態等
一般來說,服務的啟動有兩個階段,一個是,開機的時候設定要不要啟動這個服務,另外一個是,你現在要不要啟動這個服務
systemctl [command] [unit]
command主要有:
start:立刻啟動後面的unit
stop:立刻關閉後面的unit
restart:立刻重新啟動後面的unit,即執行stop再執行start
reload:不關閉後面接的unit的情況下,重新載入配置檔案,讓設定生效
enable:設定下次開機時,後面的unit會被啟動
disable:設定下次開機時,後面的unit不會被啟動
status:檢視後面unit的狀態,會列出有沒有正在執行,開機預設執行與否,登入等資訊
is-active:目前有沒有正在執行中
is-enable:開機時有沒有預設要啟用這個unit