# systemd 精靈 > systemd 是適用於 Linux 的系統和工作階段管理員,它與 System V 及 LSB init 程序檔相容。 > > 主要功能如下︰ * 提供積極主動的平行化功能 * 使用插槽及 D-Bus 啟用方式來啟動服務 * 提供精靈的隨需啟動 * 使用 Linux cgroup 追蹤程序 * 支援對系統狀態拍攝快照並還原 * 維護掛接點和自動掛接點 * 實作事務相關型複雜的服務控制邏輯 > 程式 systemd 是程序 ID 為 1 的程序。負責以所需的方式啟始化系統。 > > systemd 由核心直接啟動,訊號 9 (kill -9) 對它不起作用。所有其他程式不是由 systemd 直接啟動,就是由它的子程序啟動。 ## systemd 用於表示下列項目的通用術語 * 服務: 程序相關資訊 (例如執行精靈);檔案名以 .service 結尾 * 目標: 用於將單位分組以及在啟動期間用作同步點;檔案名以 .target 結尾 * 插槽: IPC 或網路插槽或檔案系統 FIFO 的相關資訊,適用於插槽型啟動 (如 inetd);檔案名以 .socket 結尾 * 路徑: 用於觸發其他單位 (例如,在檔案變更時執行服務);檔案名以 .path 結尾 * 計時器: 受控計時器的相關資訊,適用於計時器型啟動;檔案名以 .timer 結尾 * 掛接點: 通常由 fstab 產生器自動產生;檔案名以 .mount 結尾 * 自動掛接點: 檔案系統自動掛接點的相關資訊;檔案名以 .automount 結尾 * Swap: 用於記憶體分頁之交換裝置或檔案相關資訊;檔案名以 .swap 結尾 * 裝置: sysfs/udev(7) 裝置樹中所展示之裝置的相關資訊;檔案名以 .automount 結尾 * 範圍/片段: 分階層管理程序群組之資源的概念;檔案名以 .scope/.slice 結尾 ## systemd 不同類型的 unit * Service類型,定義服務程序的啟動、停止、重新啟動等操作及進程相關屬性 * Target類型,主要目的是將Service(也可以是其它Unit)進行分組、歸類,可以包含一個或多個Service Unit(也可以是其它Unit) #### 可以將服務設定檔手動存放至使用者設定目錄/etc/systemd/system下 ### systemd service文件格式說明 ``` Unit] Description = some descriptions Documentation = man:xxx(8) man:xxx_config(5) Requires = xxx1.target xxx2.target After = yyy1.target yyy2.target [Service] Type = <TYPE> ExecStart = <CMD_for_START> ExecStop = <CMD_for_STOP> ExecReload = <CMD_for_RELOAD> Restart = <WHEN_TO_RESTART> RestartSec = <TIME> [Install] WantedBy = xxx.target yy.target ``` #### 一個 `xxx.Service`設定檔分為三個部分: * Unit:定義該服務作為Unit角色時相關的屬性 * Service:定義本服務相關的屬性 * Install:定義本服務在設定服務開機自啟動時相關的屬性。 Ref: https://systemd-book.junmajinlong.com/service_1.html