1. 程式人生 > >【RHEL7/CentOS7服務控制之systemctl命令】

【RHEL7/CentOS7服務控制之systemctl命令】

Systemd對於Linux來說,就是一個init程式,可以作為sysVinitUpstat的替代。

RHEL7監控和控制Systemd的主要命令是systemctl,該命令可檢視系統狀態管理系統及服務

RHEL7的服務systemctl指令碼存放在:/usr/lib/systemd,有系統(system)使用者(user)之分。
.
像一些需要開機不登陸就得執行的程式,就存在系統服務裡,即:/usr/lib/systemd/system目錄下。而關於使用者的存放在/usr/lib/systemd/user目錄下。
.
其中每一個服務以.service結尾,一般分為3部分:[Unit][Service]

[Install]
.
如下圖(sshd服務):
在這裡插入圖片描述
[Unit]
這部分是對這個服務的說明,主要內容包括Description和After。
Description用於描述服務;After用於描述服務型別。
.
[Service]
這部分是服務的關鍵,是服務的一些具體執行引數的設定。

  1. Type=forking 表示此服務是後臺執行的形式。
  2. PIDFile 指定存放PID的檔案路徑。
  3. ExecStart 為服務的具體執行命令。
  4. ExecReload 為過載命令。
  5. ExecStop 為停止命令。

.
注意:[Service]部分的啟動、重啟、停止 命令全部要求使用絕對路徑!
.
[Install]


這部分是服務安裝的相關設定,可設定為多使用者的。
需要注意的是,如果服務沒有Install部分,一般意味著應該通過其它服務自動呼叫它們。
使用systemd時,可通過正確編寫單元配置檔案來解決其依賴關係。
典型的情況是,服務A要求服務B在A啟動之前執行。在此情況下,向服務A配置檔案中的[Unit]段新增Requires=B和After=B即可.
***
對於玩轉RHEL6的小夥伴來說,servicechkconfig這兩個命令肯定不陌生。

RHEL7系統中的systemctl是管制服務的主要工具,它整合了service與chkconfig功能於一體。

systemd提供更優秀的框架以表示系統服務間的依賴關係。
systemd實現系統初始化時服務的並行啟動,同時達到降低Shell的系統開銷的效果。
systemd的目的是儘可能啟動更少的程序,儘可能將更多程序並行啟動。

systemctl命令的基本格式:systemctl 動作 服務名.service

可使用 systemctl daemon-reload 重新載入systemd,掃描新的或有變動的單元。

系統狀態相關

systemctl reboot 重啟系統
.
systemctl poweroff 退出系統並停止電源
.
systemctlsystemctl list-units 輸出啟用單元
.
systemctl list-units --type=service 列出active狀態的服務
.
systemctl list-unit-files 列出所有已安裝的服務
.
systemctl --failed 顯示啟動失敗的服務
.
systemd-cgls 以樹形列出正在執行的程序

服務控制相關

systemctl start 服務名.service 立即啟動服務
.
systemctl stop 服務名.service 立即停止服務
.
systemctl restart 服務名.service 重啟服務
.
systemctl reload 服務名.service 重新載入服務
.
systemctl status 服務名.service 輸出服務執行狀態
.
systemctl is-enabled 服務名.service 檢查服務是否為開機自啟
.
systemctl enable 服務名.service 啟用服務開機自啟
.
systemctl disable 服務名.service 禁用服務開機自啟
.
systemctl is-active 服務名.service 檢查服務是否正在執行
.
systemctl mask 服務名.service 禁用服務
.
systemctl unmask 服務名.service 啟用服務

關於單元副檔名

所有可用的單元檔案存放在/usr/lib/systemd/system//etc/systemd/system目錄(後者優先順序更高)。
.
一個單元可以是系統服務(.service)、掛載點(.mount)、sockets(.sockets)。
.
使用systemctl控制單元時,通常需要使用單元檔案的全名,包括副檔名(例如sshd.service)。
.
但是呢,有些單元檔案可以在systemctl中使用簡寫方式。如果無副檔名,systemctl預設把副檔名當做.service。例如 sshd 和 sshd.service 是等價的。
.
掛載點會自動轉化為相應的.mount單元。例如/home等價於home.mount。
裝置會自動轉化為相應的.device單元,所以/dev/sda2等價於dev-sda2.device。


做你沒做過的事情,叫做成長。

做你不願意做的事情,叫做改變。

做你不敢做的事情,叫做突破。

兄dei,加油!

不要每天看著勵志的句子,過著頹廢的生活。

——抖音@張培豬