Linux(入門基礎):102---systemd進程簡介及其配置文件

引入

  • centos 7.x以後,開始使用systemd這個啓動服務管理機制,放棄沿用多年的System V的init開機啓動服務

一、並行處理所有服務,加速開機流程

  • 舊的init啓動腳本是【一項一項任務依序啓動】的模式,因此不依賴的服務也是得要一個一個的等待
  • 我們的硬件主機系統與操作系統幾乎都支持多內核架構了,因此systemd也可以讓所有的服務同時啓動

二、systemctl系統服務管理命令

  • 系統上僅有一個systemd服務搭配systemctl命令來處理,無須其他額外的命令來支持。
  • 不像System V還要init、chkconfig、service等命令

三、服務依賴性的自我檢查

  • 例如:如果我們需要啓用服務A,但是服務A需要服務B的支持。如果此時服務B沒有開啓,systemd會自動幫你啓動B服務
  • 這比init進程要好用的多

四、服務分類

systemd旗下管理的服務非常多。systemd先定義所有的服務爲一個服務單位(unit),並將該unit歸類到不同的服務類型中

  • 舊的init:僅分爲stand  alone和super  daemon
  • systemd:將服務單位(unit)區分爲:service(系統服務)、socket(數據監聽與交換的socket文件服務)、target(提供不同類似運行級別分類的操作環境)、path、snapshot、timer等多種不同的類型

五、向下兼容舊有的init服務腳本

  • systemd可以兼容init的啓動腳本,舊的init啓動腳本也能夠通過systemd來管理

六、systemd無法替換init哪些功能

雖然systemd功能強大,但是init的有些功能是systemd無法替換的

  • init程序有7個運行級別,但是systemd大概僅有1、3、5
  • 全部的systemd都用systemctl這個管理程序命令來管理,而systemctl支持的語法有限制,不想/etc/init.d/daemon就是純腳本可以自定義參數
  • 如果某個服務是管理員自己手動啓動,而不是使用systemctl去啓動,那麼systemd將無法檢測到該啓動的服務,從而無法進一步管理
  • systemd啓動過程中,無法與管理員通過標準輸入傳入信息。因此,自己編寫systemd的啓動設置時,務必要取消交互機制(連通過啓動時傳進的標準輸入信息也要避免)

七、systemd的配置文件

  • /usr/lib/systemd/system/:每個服務最主要的啓動腳本設置,有點類似於init的/etc/init.d下面的文件
  • /run/systemd/system/:系統執行過程中所產生的服務腳本,這些腳本的優先級要比/usr/lib/systemd/system/高
  • /etc/systemd/system/:管理員根據主機系統的需要所建立的執行腳本,是一大堆鏈接文件,鏈接到/usr/lib/systemd/system/。其實這個目錄有點像以前/etc/rc.d/rc5.d/Sxx之類的功能,執行優先級又比/run/systemd/system/高

操作系統啓動會不會執行某些服務其實是看/etc/systemd/system/下面的設置,該目錄下是一大堆鏈接文件,鏈接到/usr/lib/systemd/system/目錄下的正確的執行腳本配置文件。因此實際執行的systemd啓動腳本配置文件是放置到/usr/lib/systemd/system/下面,因此,如果你想要修改某個服務啓動的設置,應該要去/usr/lib/systemd/system/下面修改纔對

八、/usr/lib/systemd/system/下的服務類型

  • systemd啓動的服務都是存放在這個目錄下,不同的服務類型有各自不同的文件後綴名。因此可以通過文件後綴名來區分服務類型
.service 一般服務類型。主要是:系統服務,包括服務器本身所需要的本地服務以及網絡服務等,經常被使用到的服務大多是這種類型。所以也是最常用的類型
.socket

內部服務數據交換的socket服務:主要是IPC的傳輸信息socket文件功能。

這種類型的服務通常在監控信息傳遞的socket文件中,當通過此socket文件傳遞信息到鏈接服務時,就根據當時的狀態將該用戶的要求傳送到對應的daemon,若daemon未啓動,則啓動該daemon後再傳送用戶的要求

使用sokcet類型的服務一般較少用到,因此在開機啓動時通常會稍微延遲啓動的時間(因此不怎麼常用)。

一般用於本地服務比較多,例如我們的圖形界面很多的軟件都是通過socket來進行本機程序數據交換的操作(這與早期的xinted這個super daemon有部分的相似)

.target 執行環境類型:其實是一羣unit的集合,例如multi-user.target其實就是一堆服務的集合。也就是說,選擇執行multi-user.target其實就是執行一堆其他的.service或(及).socket之類的服務

.mount

.automount

文件系統掛載相關的服務:例如來自網絡的自動掛載、NFS文件系統掛載等與文件系統相關性較高的進程管理
.path 檢測特定文件或目錄類型:某些服務需要檢測某些特定的目錄來提供隊列服務,例如最常見的打印服務,就是通過檢測打印隊列目錄來啓動打印功能,這是就需要.path的服務類型來支持
.timer 循環執行的服務:這個服務有點類似anacrontab,不過由systemd主動提供,比anacrontab更加有彈性

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