systemd說明
- Systemd從字面意思上看,應該是系統守護進程的意思,所有的系統服務都是有Systemd來啓動的,它的PID是1,取代原來CentOS6的init.d。
- Systemd 並不是一個命令,而是一組命令,涉及到系統管理的方方面面,它包括了:
systemctl、systemd-analyze、hostnamectl、localectl、 timedatectl、loginctl
等多個管理工具。 - CentOS7的systemd服務管理方式和centOS6的init的管理方式已經有了很大區別。最大的區別就是systemd是常駐內存的,因此執行速度比較快,並且實現了併發式的服務啓動,解決了服務的依賴性問題。
systemctl命令
- systemctl是 Systemd 的主命令,用於管理系統和服務狀態。
systemctl poweroff #系統關機 systemctl reboot #重新開機 systemctl suspend #進入暫停模式 systemctl hibernate #進入休眠模式 systemctl rescue #強制進入救援模式 systemctl emergency #強制進入緊急救援模式
Unit
-
Systemd 可以管理所有系統資源。不同的資源統稱爲 Unit(單位)。
-
unit類型
類型 含義 Service unit 系統服務 Target unit 多個 Unit 構成的一個組 Device Unit 硬件設備 Mount Unit 文件系統的掛載點 Automount Unit 自動掛載點 Path Unit 文件或路徑 Scope Unit 不是由 Systemd 啓動的外部進程 Slice Unit 進程組 Snapshot Unit Systemd 快照,可以切回某個快照 Socket Unit 進程間通信的 socket Swap Unit swap 文件 Timer Unit 定時器 -
unit管理
命令:systemctl [command] [unit]
start:啓動unit
stop:關閉unit
restart:重啓unit
reload:重載unit的配置
enable:設置下次開機時,unit會被啓動
disable:設置下次開機時,unit不會被啓動
is-active :目前有沒有正在運行中
is-enable :開機時有沒有默認要啓用這個unit
show:顯示某個 Unit 的所有底層參數
- 單個unit狀態查看
status:目前後面接的這個 unit 的狀態,會列出有沒有正在執行、開機默認執行否、登錄等信息等。
is-active :目前有沒有正在運行中
is-enable :開機時有沒有默認要啓用這個unit
is-failed:啓動失敗的unit
show:顯示某個 Unit 的所有底層參數
- status顯示的unit的Loaded狀態
enabled:這個daemon將在開機時被執行
disabled:這個daemon在開機時不會被執行
static:這個daemon不可以自己啓動(enable不可),不過可能會被其他的enabled的服務來喚醒(依賴的服務)
mask:這個daemon無論如何都無法被啓動,因爲已經被強制註銷(非刪除)。可通過 systemctl unmask 方式改回原本狀態。
- status顯示的unit的Active狀態
active (running):正有一隻或多隻程序正在系統中執行的意思,舉例來說,正在執行中的vsftpd就是這種模式。
active (exited):僅執行一次就正常結束的服務,目前並沒有任何程序在系統中執行。
active (waiting):正在執行當中,不過還再等待其他的事件才能繼續處理。
inactive:這個服務目前沒有運行的意思。
- 範例一:看看目前 atd 這個服務的狀態爲何?
[ming@ming ~]$ systemctl status atd.service
● atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
Active: active (running) since 五 2020-03-06 18:21:42 CST; 2 days ago
Main PID: 1264 (atd)
Tasks: 1
CGroup: /system.slice/atd.service
└─1264 /usr/sbin/atd -f
# Loaded:這行在說明,開機的時候這個 unit 會不會啓動,enabled 爲開機啓動,disabled 開機不會啓動
# Active:現在這個 unit 的狀態是正在執行(running)或沒有執行 (dead)
- 當前系統的所有unit狀態
systemctl list-units # 列出正在運行的 Unit
systemctl list-units --all # 列出所有Unit,包括沒有找到配置文件的或者啓動失敗的
systemctl list-units --all --state=inactive # 列出所有沒有運行的 Unit
systemctl list-units --failed # 列出所有加載失敗的 Unit
systemctl list-units --type=service # 列出所有正在運行的、類型爲 service 的 Unit
- 依賴關係
systemctl list-dependencies [unit] #列出unit依賴
systemctl list-dependencies --all [unit] #展開顯示依賴關係
systemctl list-dependencies [unit] [--reverse] #反向查詢依賴,unit被誰依賴