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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

systemd 简介

發(fā)布時(shí)間:2024/1/8 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 systemd 简介 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

systemd是linux系統(tǒng)第一個(gè)運(yùn)行的進(jìn)程,用來(lái)創(chuàng)建系統(tǒng)的守護(hù)進(jìn)程來(lái)管理整個(gè)linux系統(tǒng)。systemd取代init的一個(gè)優(yōu)勢(shì)就是他集合了豐富的功能,同時(shí)支持并行啟動(dòng)守護(hù)進(jìn)程,使用起來(lái)方便。可以理解為systemd初始化整個(gè)系統(tǒng)所需的資源。

文章目錄

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

一、systemd 基本命令

通過(guò)命令控制systemd來(lái)管理系統(tǒng)的服務(wù)。

1、systemctl

systemctl是最基本的一個(gè)命令,可用于管理系統(tǒng):

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

2、systemd-analyze

systemd-analyze用于分析系統(tǒng)啟動(dòng)守護(hù)進(jìn)程所耗費(fèi)的時(shí)間。

# 查看啟動(dòng)耗時(shí) $ systemd-analyze # 查看每個(gè)服務(wù)的啟動(dòng)耗時(shí) $ systemd-analyze blame # 顯示瀑布狀的啟動(dòng)過(guò)程流 $ systemd-analyze critical-chain # 顯示指定服務(wù)的啟動(dòng)流 $ systemd-analyze critical-chain atd.service

二、Unit

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

1、分類

Unit有12種:

  • service:系統(tǒng)服務(wù)
  • target:多個(gè)unit構(gòu)成的一個(gè)組
  • mount:文件系統(tǒng)掛載點(diǎn)
  • automount:自動(dòng)掛載點(diǎn)
  • path:文件或路徑
  • scope:不是由systemd啟動(dòng)的外部進(jìn)程
  • slice:進(jìn)程組
  • socket:進(jìn)程間通信的socket
  • swap:swap文件
  • timer:定時(shí)器
  • device:硬件設(shè)備

2、unit管理

最常用的unit管理命令:

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

3、依賴、順序

Unit 之間存在依賴關(guān)系:若A 依賴于 B,就意味著 Systemd 在啟動(dòng) A 的時(shí)候,同時(shí)會(huì)去啟動(dòng) B。

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

  • want:表示弱依賴,若一個(gè)弱依賴的服務(wù)異常關(guān)閉,本服務(wù)不受影響
  • require:表示強(qiáng)依賴,若一個(gè)強(qiáng)依賴的服務(wù)異常關(guān)閉,本服務(wù)也要關(guān)閉
  • after:本服務(wù)要在之后執(zhí)行
  • before:本服務(wù)要在之前執(zhí)行

注意,Wants字段與Requires字段只涉及依賴關(guān)系,與啟動(dòng)順序無(wú)關(guān),默認(rèn)情況下是同時(shí)啟動(dòng)的。

三、Unit配置文件

每一個(gè) Unit 都有一個(gè)配置文件,告訴 Systemd 怎么啟動(dòng)這個(gè) Unit 。

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

【Uint】區(qū)塊

[Unit]區(qū)塊用來(lái)定義 Unit 的內(nèi)容,配置與其他 Unit 的依賴、啟動(dòng)順序關(guān)系。它的主要字段如下。

Description:簡(jiǎn)短描述 Documentation:文檔地址 Requires:當(dāng)前 Unit 依賴的其他 Unit,如果它們沒(méi)有運(yùn)行,當(dāng)前 Unit 會(huì)啟動(dòng)失敗 Wants:與當(dāng)前 Unit 配合的其他 Unit,如果它們沒(méi)有運(yùn)行,當(dāng)前 Unit 不會(huì)啟動(dòng)失敗 BindsTo:與Requires類似,它指定的 Unit 如果退出,會(huì)導(dǎo)致當(dāng)前 Unit 停止運(yùn)行 Before:如果該字段指定的 Unit 也要啟動(dòng),那么必須在當(dāng)前 Unit 之后啟動(dòng) After:如果該字段指定的 Unit 也要啟動(dòng),那么必須在當(dāng)前 Unit 之前啟動(dòng)

【Install】區(qū)塊

定義如何啟動(dòng),以及是否開機(jī)啟動(dòng)。它的主要字段如下。

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

【Service】區(qū)塊

Service 類型的 Unit 才有這個(gè)區(qū)塊。它的主要字段如下。

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

四、Target

systemd管理的Unit很多,一個(gè)個(gè)啟動(dòng)很麻煩,用target來(lái)幫助系統(tǒng)大量啟動(dòng)Unit。Target 就是一個(gè) Unit 組,包含許多 Unit。啟動(dòng)某個(gè) Target 的時(shí)候,Systemd 就會(huì)啟動(dòng)里面所有的 Unit。

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

graphical.target啟動(dòng)了圖形界面所需的服務(wù),包括了multi-user.target.

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

# 查看當(dāng)前系統(tǒng)的所有 Target $ systemctl list-unit-files --type=target # 查看一個(gè) Target 包含的所有 Unit $ systemctl list-dependencies multi-user.target # 查看啟動(dòng)時(shí)的默認(rèn) Target $ systemctl get-default # 設(shè)置啟動(dòng)時(shí)的默認(rèn) Target $ sudo systemctl set-default multi-user.target

總結(jié)

以上是生活随笔為你收集整理的systemd 简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。