1. 程式人生 > 其它 >linux基礎七之通過systemctl管理服務

linux基礎七之通過systemctl管理服務

技術標籤:linuxlinux

從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