日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

systemd 简介

發布時間:2024/1/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 systemd 简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

systemd是linux系統第一個運行的進程,用來創建系統的守護進程來管理整個linux系統。systemd取代init的一個優勢就是他集合了豐富的功能,同時支持并行啟動守護進程,使用起來方便。可以理解為systemd初始化整個系統所需的資源。

文章目錄

    • 一、systemd 基本命令
      • 1、systemctl
      • 2、systemd-analyze
    • 二、Unit
      • 1、分類
      • 2、unit管理
      • 3、依賴、順序
    • 三、Unit配置文件
      • 【Uint】區塊
      • 【Install】區塊
      • 【Service】區塊
    • 四、Target

一、systemd 基本命令

通過命令控制systemd來管理系統的服務。

1、systemctl

systemctl是最基本的一個命令,可用于管理系統:

# 重啟系統 $ sudo systemctl reboot # 關閉系統,切斷電源 $ sudo systemctl poweroff # CPU停止工作 $ sudo systemctl halt # 暫停系統 $ sudo systemctl suspend # 讓系統進入冬眠狀態 $ sudo systemctl hibernate # 讓系統進入交互式休眠狀態 $ sudo systemctl hybrid-sleep # 啟動進入救援狀態(單用戶狀態) $ sudo systemctl rescue

2、systemd-analyze

systemd-analyze用于分析系統啟動守護進程所耗費的時間。

# 查看啟動耗時 $ systemd-analyze # 查看每個服務的啟動耗時 $ systemd-analyze blame # 顯示瀑布狀的啟動過程流 $ systemd-analyze critical-chain # 顯示指定服務的啟動流 $ systemd-analyze critical-chain atd.service

二、Unit

Systemd 可以管理的系統資源。不同的資源統稱為 Unit(單位)。

1、分類

Unit有12種:

  • service:系統服務
  • target:多個unit構成的一個組
  • mount:文件系統掛載點
  • automount:自動掛載點
  • path:文件或路徑
  • scope:不是由systemd啟動的外部進程
  • slice:進程組
  • socket:進程間通信的socket
  • swap:swap文件
  • timer:定時器
  • device:硬件設備

2、unit管理

最常用的unit管理命令:

  • systemctl start unit
  • systemctl stop unit
  • systemctl restart unit
  • systemctl reload unit(重新加載unit的配置文件)
  • systemctl kill unit(殺死unit的所有進程)
  • systemctl daemon-reload(重新加載所有修改過的配置文件)

3、依賴、順序

Unit 之間存在依賴關系:若A 依賴于 B,就意味著 Systemd 在啟動 A 的時候,同時會去啟動 B。

systemctl list-dependencies命令列出一個 Unit 的所有依賴。

  • want:表示弱依賴,若一個弱依賴的服務異常關閉,本服務不受影響
  • require:表示強依賴,若一個強依賴的服務異常關閉,本服務也要關閉
  • after:本服務要在之后執行
  • before:本服務要在之前執行

注意,Wants字段與Requires字段只涉及依賴關系,與啟動順序無關,默認情況下是同時啟動的。

三、Unit配置文件

每一個 Unit 都有一個配置文件,告訴 Systemd 怎么啟動這個 Unit 。

Systemd 默認從目錄/etc/systemd/system/讀取配置文件。但是,里面存放的大部分文件都是符號鏈接,真正的配置文件存放在/lib/systemd/system/目錄下

【Uint】區塊

[Unit]區塊用來定義 Unit 的內容,配置與其他 Unit 的依賴、啟動順序關系。它的主要字段如下。

Description:簡短描述 Documentation:文檔地址 Requires:當前 Unit 依賴的其他 Unit,如果它們沒有運行,當前 Unit 會啟動失敗 Wants:與當前 Unit 配合的其他 Unit,如果它們沒有運行,當前 Unit 不會啟動失敗 BindsTo:與Requires類似,它指定的 Unit 如果退出,會導致當前 Unit 停止運行 Before:如果該字段指定的 Unit 也要啟動,那么必須在當前 Unit 之后啟動 After:如果該字段指定的 Unit 也要啟動,那么必須在當前 Unit 之前啟動

【Install】區塊

定義如何啟動,以及是否開機啟動。它的主要字段如下。

WantedBy:它的值是一個或多個 Target,當前 Unit 激活時(enable)符號鏈接會放入/etc/systemd/system目錄下面以 Target 名 + .wants后綴構成的子目錄中 RequiredBy:它的值是一個或多個 Target,當前 Unit 激活時,符號鏈接會放入/etc/systemd/system目錄下面以 Target 名 + .required后綴構成的子目錄中 Alias:當前 Unit 可用于啟動的別名 Also:當前 Unit 激活(enable)時,會被同時激活的其他 Unit

【Service】區塊

Service 類型的 Unit 才有這個區塊。它的主要字段如下。

Type:定義啟動時的進程行為。它有以下幾種值。 Type=simple:默認值,執行ExecStart指定的命令,啟動主進程 Type=forking:以 fork 方式從父進程創建子進程,創建后父進程會立即退出 Type=oneshot:一次性進程,Systemd 會等當前服務退出,再繼續往下執行 Type=dbus:當前服務通過D-Bus啟動 Type=notify:當前服務啟動完畢,會通知Systemd,再繼續往下執行 Type=idle:若有其他任務執行完畢,當前服務才會運行 ExecStart:啟動當前服務的命令 ExecStartPre:啟動當前服務之前執行的命令 ExecStartPost:啟動當前服務之后執行的命令 ExecReload:重啟當前服務時執行的命令 ExecStop:停止當前服務時執行的命令 ExecStopPost:停止當其服務之后執行的命令 RestartSec:自動重啟當前服務間隔的秒數 Restart:定義何種情況 Systemd 會自動重啟當前服務,可能的值包括always(總是重啟)、on-success、on-failure、on-abnormal、on-abort、on-watchdog TimeoutSec:定義 Systemd 停止當前服務之前等待的秒數 Environment:指定環境變量 RemainAfterExit:unit的進程退出后,unit資源保留下來

四、Target

systemd管理的Unit很多,一個個啟動很麻煩,用target來幫助系統大量啟動Unit。Target 就是一個 Unit 組,包含許多 Unit。啟動某個 Target 的時候,Systemd 就會啟動里面所有的 Unit。

systemd啟動的第一個target為default.target,他是一個軟鏈接,能指向multi-user.target或graphical.target.(用戶控制)

graphical.target啟動了圖形界面所需的服務,包括了multi-user.target.

systemd啟動的服務流程可從官網提供的流程圖了解:
https://www.freedesktop.org/software/systemd/man/bootup.html#System%20Manager%20Bootup

# 查看當前系統的所有 Target $ systemctl list-unit-files --type=target # 查看一個 Target 包含的所有 Unit $ systemctl list-dependencies multi-user.target # 查看啟動時的默認 Target $ systemctl get-default # 設置啟動時的默認 Target $ sudo systemctl set-default multi-user.target

總結

以上是生活随笔為你收集整理的systemd 简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。