systemd

来源:http://www.cnblogs.com/jym1/archive/2017/12/20/8072964.html
-Advertisement-
Play Games

一、systemd的由來與特性 1、歷史由來 從CentOS 7系列開始,redhat正式將systemd用於系統管理,來取代CentOS 5的sysV init和CentOS 6的upstart體系;較之之前,systemd為linux系統提供了啟動與管理的一整套解決方案;下圖為systemd框架 ...


一、systemd的由來與特性

1、歷史由來
   從CentOS 7系列開始,redhat正式將systemd用於系統管理,來取代CentOS 5的sysV init和CentOS 6的upstart體系;較之之前,systemd為linux系統提供了啟動與管理的一整套解決方案;下圖為systemd框架圖,見圖可知,功能甚為強大。


2、systemd的新特性
    1.   系統啟動時服務並行啟動;
    2.   按需激活進程,節約資源;
    3.   系統快照功能,下次啟動時可恢復至某一次快照時狀態;
    4.   基於依賴關係定義服務控制邏輯;

二、system的unit

1、何為unit
    unit是對配置文件進行標識和配置:文件中主要包含了系統服務,監聽socket,保存的系統快照以及其他與init相關的信息

2、unit在系統中的路徑
            軟體包安裝的系統單元:/usr/lib/systemd/system
            運行時配置的系統單元:/run/systemd/system
            本地配置的系統單元:/etc/systemd/system

3、unit的類型
    Service unit:用於定義系統服務,文件擴展名為.service
    Target unit:用於模擬實現“運行級別”,文件擴展名為.target
    Device unit:用於定義內核識別的設備,文件擴展名為.device
    Mount unit:用於定義文件系統掛載點,文件擴展名為.mount
    Socket unit:用於標識進程間通行用的socket文件,文件擴展名為.socket
    Snapshot unit:管理系統快照,文件擴展名為.snapshot
    Swap unit:用於標識swap設備,文件擴展名為.swap
    Automount unit:文件系統的自動掛載點,文件擴展名為.automount
    Path unit:用於根據文件系統上特定對象的變化來啟動其他服務,文件擴展名為.path
    Timer unit:用於管理計劃任務,文件擴展名為.timer
    Slice unit:用於資源管理,文件擴展名為.slice
    Scope unit:用於外部創建的進程,文件擴展名為.scope

4、各unit取代的傳統服務
/etc/rc.d/init.d/ --> service unit
init LEVEL --> target unit
/etc/fstab --> mount unit
autofs service --> automount unit
atd,crond --> timer unit**

5、unit的配置文件
    5.1、概述
     systemd在管理unit時,會預設從本地配置/etc/systemd/system目錄中讀取配置文件;但是,本地配置目錄中的大多數配置文件都是鏈接/usr/lib/systemd/system中的文件。
    ln -s /usr/lib/systemd/system/name.service /etc/systemd/system/name.service實現的就是上面的過程;
    其等同於:systemctl enable name.service,激活開機啟動
    反之:systemctl disable name.service 關閉開機啟動

    5.2、配置文件
        修改配置文件,可以直接 vim /usr/lib/systemd/system/name.service修改;
        查看配置文件,systemctl cat name.service

                #/usr/lib/systemd/system/sshd.service
                [Unit]
                Description=OpenSSH server daemon
                Documentation=man:sshd(8) man:sshd_config(5)
                After=network.target sshd-keygen.service
                Wants=sshd-keygen.service

                [Service]
                Type=notify
                EnvironmentFile=/etc/sysconfig/sshd
                ExecStart=/usr/sbin/sshd -D $OPTIONS
                ExecReload=/bin/kill -HUP $MAINPID
                KillMode=process
                Restart=on-failure
                RestartSec=42s

                [Install]
                WantedBy=multi-user.target
5.3、配置文件區塊
        [unit]  定義unit的元數據以及與其他unit之間的關係
                Description:簡短描述
                Documentation:man文檔地址
                Requires:強依賴關係,當前 Unit 依賴的其他 Unit,如果它們沒有運行,當前 Unit 會啟動失敗
                Wants:弱依賴關係,與當前 Unit 配合的其他 Unit,如果它們沒有運行,當前 Unit 不會啟動失敗
                BindsTo:與Requires類似,它指定的 Unit 如果退出,會導致當前 Unit 停止運行
                Before:如果該欄位指定的 Unit 也要啟動,那麼必須在當前 Unit 之後啟動
                After:如果該欄位指定的 Unit 也要啟動,那麼必須在當前 Unit 之前啟動
                Conflicts:這裡指定的 Unit 不能與當前 Unit 同時運行
                Condition...:當前 Unit 運行必須滿足的條件,否則不會運行
                Assert...:當前 Unit 運行必須滿足的條件,否則會報啟動失敗

        [service] service unit的配置,只有service類型才有
                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:指定環境變數

        [install] 定義如何啟動,以及是否開機啟動
                WantedBy:可以是一個或多個Target,當前unit enable時,符號鏈接會放入/etc/systemd/system/TARGET.wants目錄下
                RequiredBy:可以是一個或多個Target,當前unit enable時,符號鏈接會放入/etc/systemd/system/TARGET.requires目錄下
                Alias:別名
                Also:當前 Unit  enable 時,會被同時激活的其他 Unit

三、 systemd的關鍵特性

    1、基於socket的激活機制
      systemd為支持此機制的服務監聽socket,當有客戶端與socket通信時,由systemd激活服務,應答客戶端的請求;這種機制類似於守護進程。

    2、基於bus的激活機制
      基於匯流排的激活

    3、基於device的激活機制
      當有設備接入時,systemd會自動激活device、mount、automount等unit來識別,掛載接入的設備

    4、基於path的激活機制
      當某個文件路徑變得可用時或路徑出現相應文件時,激活對應服務

    5、系統快照機制
      保存各unit的當前狀態信息到持久存儲中,在下次開機時可恢復之前某次快照時的系統狀態,必要時可自動載入

    6、向後相容
        相容CentOS 5的sysV init以及CentOS 6的upstart機制,也就是說可以繼續將服務管理腳本放入/etc/rc.d/init.d目錄中管理

四、systemd與sysV init 以及upstart不相容之處

    1、/etc/rc.d/init.d目錄中的服務管理腳本不可以用systemctl命令來管理,systemctl命令的參數已經固定

    2、/etc/rc.d/init.d目錄中的服務管理腳本啟動的服務,與systemd管理啟動的進程之間無法通信

    3、systemd雖然模擬出run level,但是與init、upstart機制的運行級別不完全一致

五、Service unit

    1、系統服務新老機制對應
        啟動:service name start ==> systemctl start name.service
        停止:service name stop ==> systemctl stop name.service
        重啟:service name restart ==> systemctl restart name.service
        狀態:service name startus ==> systemctl startus name.service
        條件式重啟:service name condrestart ==> systemctl try-restart name.service
        重載或重啟服務:systemctl reload-or-restart name.service
        重載或條件式重啟服務:systemctl reload-or-try-restart name.service
        禁止設定為開機自啟:systemctl mask name.service
        取消禁止設定為開機自啟:systemctl unmask name.service
        查看某服務當前激活與否的狀態:systemctl is-active name.service
        查看所有已經激活的服務:systemctl list-units --type service
        查看所有服務:systemctl list-units --type service --all

    2、chkconfig命令的對應關係
            設定某服務開機自啟:chkconfig name on ==> systemctl enable name.service
            禁止:chkconfig name off ==> systemctl disable name.service
            查看所有服務的開機自啟狀態:chkconfig --list ==> systemctl list-unit-file --type service
            查看服務是否開機自啟:systemctl is-enable name.service
            查看服務的依賴關係:systemctl list-dependencies name.service

六、target unit

    1、運行級別:
            0 ==>    runlevel0.target,poweoff.target
            1 ==>    runlevel1.target, rescue.target
            2 ==>    runlevel2.target,multi-user.target
            3 ==>    runlevel3.target,multi-user.target
            4 ==>    runlevel4.target,multi-user.target
            5 ==>    runlevel5.target,graphical.target
            6 ==>    runlevel6.target,reboot.target
    2、級別切換:init N ==> systemctl isolate name.target
    3、查看級別:runlevel ==> systemctl list-units --type target
    4、獲取預設運行級別:/etc/initab ==> systemctl get-default
    5、修改預設級別:/etc/initab ==> systemctl set-default name.target
    6、切換至緊急救援模式:systemctl rescue
    7、切換至emergency模式:systemctl emergency

七、其他常用命令

    1、系統開關機及快照
        關機:systemctl halt,systemctl poweroff
        重啟:systemctl reboot
        掛起:systemctl suspend
        快照:systemctl hibernate
        快照並掛起:systemctl hybrid-sleep
        關閉進程:systemctl kill
    2、主機名
        更改主機名:hostnamectl set-hostname iie-test
        查看主機名:hostnamectl status

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.chgrp——改變所屬群組 每個檔案都有三個屬性,擁有者、群組、其他人,chgrp就可以更改檔案的群組,如下 上面1.txt和2.txt的群組都是zyj,相當於在zyj群組中的用戶都只能讀取檔案1.txt和2.txt 接下來我們改變檔案的群組為root後就可以修改檔案的內容了,如下 2.chow ...
  • 推輓輸出,可以輸出高電平,連接數字器件: 輸出0時,N-MOS導通,P-MOS高阻,輸出0。 輸出1時,N-MOS高阻,P-MOS高阻,輸出1;(不需要外部上拉電阻) 開漏輸出: 輸出端相當於三極體的集電極,要得到高電平狀態需要上拉電阻才行,適合做電流型驅動; 輸出0時,N-MOS導通,P-MOS不 ...
  • 1.什麼操作出現:當我在項目中添加產品或者修改時,瀏覽器出現HTTP Status 500 Request processing failed; nested exception is org.hibernate.exception.GenericJDBCException: could not e ...
  • #!/usr/bin/expect -f set pwffd [lindex $argv 0] spawn ssh cmesvr2i expect "*password:" send "$pwffd\r" expect "*#" interact ...
  • 二周第三次課(12月20日)2.14 更改文件和目錄許可權chmod 2.15 更改所有者和所屬組chown2.16 umask2.17 隱藏許可權lsattr/chattr 更改文件和目錄許可權:命令:#chmod >> change mode (-R=文件所有者·文件所屬組·其他用戶一起更改) # r ...
  • Linux下一次刪除百萬文件 Linux下一次刪除百萬文件 線上環境遇到的一個問題,文件數量過多,執行rm命令報錯 # rm -f ./* -bash: /bin/rm: Argument list too long # rm -f ./* -bash: /bin/rm: Argument list ...
  • 一、heartbeat介紹 heartbeat是HA高可用集群的一個重要組件,heartbeat實現了資源轉移和心跳信息傳遞。它的常用組合方式為heartbeat v1,heartbeat v2+crm,heartbeat v3 + pacemaker,目前版本為v3版本。 二、編譯前準備 hear ...
  • 一、LVS基本情況 lvs:Linux Virtual Server,是一種負載均衡集群,其主要是由工作在內核的ipvs與用戶空間的命令行工具ipvsadm組成。支持TCP,UDP,AH,EST,AH_EST,SCTP等諸多協議。 lvs-type: lvs-nat ​ lvs-dr(direct ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...