centos7的systemd

来源:https://www.cnblogs.com/shenxm/archive/2018/02/14/8447756.html
-Advertisement-
Play Games

系統啟動流程 systemd Unit 類型 服務管理 ` 運行級別 CentOS7 引導啟動順序 service unit 文件格式 設置內核參數 啟動排錯 破解CentOS7 的root 口令 修複GRUB2 ...


系統啟動流程

    POST --> Boot Sequence --> Bootloader --> kernel+initramfs(initrd) --> rootfs --> /sbin/init
    init: 
        CentOS 5: SysV init
        CentOS 6: Upstart
        CentOS 7: Systemd

systemd

    系統啟動和伺服器守護進程管理器,負責在系統啟動或運行時,激活系統資源,伺服器進程和其它進程。
    新特性:
        系統引導時實現服務並行啟動
        按需啟動守護進程
        自動化的服務依賴關係管理
        同時採用socket式與D-Bus匯流排式激活服務
        系統狀態快照
    核心概念:unit
        unit 表示不同類型的systemd對象,通過配置文件進行標識和配置。
        文件中主要包含了系統服務、監聽socket 、保存的系統快照以及其它與init 相關的信息。
    配置文件:
        /usr/lib/systemd/system: 
            每個服務最主要的啟動腳本設置,類似於之前的/etc/init.d/
        /run/systemd/system:
            系統執行過程中所產生的服務腳本,比/usr/lib/systemd/system目錄優先運行
        /etc/systemd/system:
            管理員建立的執行腳本,類似於/etc/rc.d/rcN.d/Sxx 類的功能,比/run/systemd/system目錄優先運行
    關鍵特性:
        基於socket 的激活機制: socket 與服務程式分離
        基於d-bus 的激活機制:  
        基於device 的激活機制: 
        基於path 的激活機制:   
        系統快照:   保存各unit的當前狀態信息於持久存儲設備中,向後相容sysv init 腳本
    不相容:
        systemctl 命令固定不變,不可擴展
        非由systemd 啟動的服務,systemctl無法與之通信和控制

Unit 類型

    Systemctl –t help  查看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,用於定義文件系統中的一個文件或目錄使用,常用於當文件系統變化時,延遲激活服務,如:spool  目錄

服務管理

`centos7幾乎一切服務都是由systemctl來管理service unit,centos7之前的service同時仍然相容。

運行級別

    target units: 
        unit 配置文件:
            .target,用於模擬實現運行級別
        ls /usr/lib/systemd/system/*.target
        systemctl list-unit-files --type target --all
    運行級別:
        0 ==> runlevel0.target, poweroff.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
    查看依賴性:
        systemctl list-dependencies graphical.target
        
    級別切換:
        init N ==> systemctl isolate name.target
        systemctl isolate multi-user.target
        註意:只有/lib/systemd/system/*.target 文件中AllowIsolate=yes才能切換,修改文件需執行systemctl daemon-reload 才能生效
    查看target:
        systemctl list-units --type target
    獲取預設運行級別:
        /etc/inittab ==> systemctl get-default
        runlevel 
        who -r
    修改預設級別:
        /etc/inittab ==> systemctl set-default name.target
        systemctl set-default multi-user.target
        ls –l /etc/systemd/system/default.target
    切換至緊急救援模式:
        相當於init 1
        systemctl rescue
    切換至emergency 模式:
        systemctl emergency
    其它常用命令:
        傳統命令init ,poweroff ,halt ,reboot 都成為 systemctl 的軟鏈接
        關機:systemctl halt 、systemctl poweroff
        重啟:systemctl reboot
        掛起:systemctl suspend
        休眠: :systemctl hibernate
        休眠並掛起:systemctl hybrid-sleep

CentOS7 引導啟動順序

    UEFi 或BIOS 初始化,運行POST 開機自檢
    選擇啟動設備
    引導裝載程式, centos7 是grub2
    載入裝載程式的配置文件:/etc/grub.d/ ,/etc/default/grub ,/boot/grub2/grub.cfg
    載入initramfs 驅動模塊
    載入內核選項
    內核初始化,centos7 使用systemd 代替init
    執行initrd.target 所有單元,包括掛載/etc/fstab
    從initramfs 根文件系統切換到磁碟根目錄
    systemd執行/etc/systemd/system目錄下的配置
        systemd 執行預設target 配置,配置文件/etc/systemd/system/default.target
        systemd 執行sysinit.target 初始化系統及basic.target 準備操作系統
        systemd 啟動multi-user.target 下的本機與伺服器服務
        systemd 執行multi-user.target 下的/etc/rc.d/rc.local
        systemd 執行multi-user.target 下的getty.target及登錄服務
        systemd 執行graphical 需要的服務

service unit 文件格式

    /etc/systemd/system :
        系統管理員和用戶使用
    /usr/lib/systemd/system :
        發行版打包者使用
    相關布爾值
        1 、yes 、on 、true  都是開啟
        0 、no 、off、false  都是關閉
    時間單位
        預設是秒,所以要用毫秒(ms )分鐘(m )等須顯式說明
    service unit file 文件通常由三部分組成:
        [Unit] :    定義與Unit 類型無關的通用選項;用於提供unit 的描述信息、unit 行為及依賴關係等
        [Service] : 與特定類型相關的專用選項;此處為Service 類型
        [Install] : 定義由“systemctl enable” 以及"systemctl  disable“ 命令在實現服務啟用或禁用時用到的一些選項
    Unit 段的常用選項:
        Description :   描述信息
        After : 定義unit 的啟動次序,表示當前unit 應該晚於哪些unit 啟動,其功能與Before 相反
        Requires :  依賴到的其它units ,強依賴,被依賴的units 無法激活時,當前unit 也無法激活
        Wants : 依賴到的其它units ,弱依賴
        Conflicts : 定義units 間的衝突關係
    Service 段的常用選項:
        Type :  定義影響ExecStart 及相關參數的功能的unit 進程啟動類型
        simple :    預設值,這個daemon(後臺進程)主要由ExecStart所接的指令串來啟動,啟動後常駐於記憶體中
        forking :   由ExecStart 啟動的程式透過spawns(繁衍)延伸出其他子程式來作為此daemon的主要服務。原生父程式在啟動結束後就會終止
        oneshot :   與simple類似,不過這個程式在工作完畢後就結束了,不會常駐在記憶體中
        dbus :  與simple類似,但這個daemon必須要在取得一個D-Bus的名稱後,才會繼續運作. 因此通常也要同時設定BusNname=  才行
        notify :    在啟動完成後會發送一個通知消息。還需要配合NotifyAccess來讓 Systemd  接收消息
        idle :  與simple類似,要執行這個daemon必須要所有的工作都順利執行完畢後才會執行。這類的daemon通常是開機到最後才執行即可的服務
        EnvironmentFile :   環境配置文件
        ExecStart : 指明啟動unit要運行命令或腳本的絕對路徑
        ExecStartPre:   ExecStart前運行
        ExecStartPost:  ExecStart後運行
        ExecStop :  指明停止unit要運行的命令或腳本
        Restart :   當設定Restart=1時,則當次daemon服務意外終止後,會再次自動啟動此服務
    Install 段的常用選項:
        Alias : 別名,可使用systemctl command Alias.service
        RequiredBy :    被哪些units所依賴,強依賴
        WantedBy :  被哪些units所依賴,弱依賴
        Also :  安裝本服務的時候還要安裝別的相關服務
    註意:
        對於新創建的unit文件,或者修改了的unit文件,要通知systemd 重載此配置文件, 可以選擇重啟
        systemctl daemon-reload
    示例:
        vim /etc/systemd/system/bak.service
            [Unit]
            Description=backup /etc
            Requires=atd.service
            [Service]
            Type=simple
            ExecStart=/bin/bash -c "echo /testdir/bak.sh|at now"
            [Install]
            WantedBy=multi-user.target
        systemctl daemon-reload
        systemctl start bak

設置內核參數

    隻影響當次啟動
    啟動時,在linux16 行後添加
    systemd.unit=desired.target
    systemd.unit=emergency.target
    systemd.unit=recure.target
    recure.target比emergency支持更多的功能,例如日誌等

啟動排錯

    文件系統損壞,先嘗試自動修複,失敗則進入emergency shell,提示用戶修複
    在/etc/fstab 不存在對應的設備和UUID等一段時間,如不可用,進入emergency shell
    在/etc/fstab 不存在對應掛載點systemd嘗試創建掛載點,否則提示進入emergency shell.
    在/etc/fstab 不正確的掛載選項提示進入emergency shell

破解CentOS7 的root 口令

    方法一
        啟動時任意鍵暫停啟動
        按e 鍵進入編輯模式
        將游標移動linux16 開始的行,添加內核參數rd.break
        按ctrl-x 啟動
        mount –o remount,rw /sysroot
        chroot /sysroot
        passwd root
        touch /.autorelabel
        exit
        reboot
    方法二
        啟動時任意鍵暫停啟動
        按e 鍵進入編輯模式
        將游標移動linux16 開始的行,改為rw init=/sysroot/bin/sh
        按ctrl-x 啟動
        chroot /sysroot
        passwd root
        touch /.autorelabel
        exit
        reboot
        

修複GRUB2

    GRUB “the Grand Unified Bootloader” ”
        引導提示時可以使用命令行界面
        可從文件系統引導
    主要配置文件 /boot/grub2/grub.cfg
    修複配置文件
        grub2-mkconfig > /boot/grub2/grub.cfg
        grub2-mkconfig  -o /boot/grub2/grub.cfg
    修複grub
        grub2-install /dev/sda (BIOS 環境)
        grub2-install (UEFI 環境)
    調整預設啟動內核
        vim /etc/default/grub
        GRUB_DEFAULT=0

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

-Advertisement-
Play Games
更多相關文章
  • 後端開發:1、高級java軟體架構師實戰培訓視頻教程2、大型SpringMVC,Mybatis,Redis,Solr,Nginx,SSM分散式電商項目視頻教程3、Spark Streaming實時流處理項目實戰4、Java校招面試 Google面試官親授5、Java開發企業級許可權管理系統6、Java ...
  • 記憶體限制:256 MiB時間限制:500 ms標準輸入輸出 題目類型:傳統評測方式:文本比較 上傳者: hzwer 記憶體限制:256 MiB時間限制:500 ms標準輸入輸出 題目類型:傳統評測方式:文本比較 上傳者: hzwer 提交提交記錄統計討論測試數據 題目描述 給出一個長為 nnn 的數列 ...
  • Producers發佈記錄到集群,集群維護這些記錄並且將記錄分發給Consumers。 在Kafka中,最關鍵的抽象是topic。Producers發佈記錄到一個topic,Consumers訂閱一個或多個topic。Topic是一個分片的寫優先的log。Producers追加記錄到這些logs,C ...
  • 前面兩篇回顧線程和線程池的使用方法,微軟在.NET4.5推出了新的線程模型-Task。本篇將簡單的介紹Task的使用方法。 Task與線程 Task與線程或者說線程池關係緊密,可以說是基於線程池實現的,雖說任務最終還是要拋給線程去執行,但是Task仍然會比線程、線程池的開銷要小,並且提供了可靠的AP ...
  • sql: https://github.com/zzzprojects/Dapper-Plus https://github.com/tmsmith/Dapper-Extensions https://github.com/ericdc1/Dapper.SimpleCRUD ...
  • 上一篇主要介紹了進程和線程的一些基本知識,現在回歸正題,我們來學一下線程的使用,本篇主要是使用新建線程和線程池的方式。 線程 先來介紹簡單的線程使用:使用new方法來創建線程,至於撤銷線程,我們不必去管(我也不知道怎麼去管XD),因為CLR已經替我們去管理了。 創建 先來看一個簡單的使用線程的例子: ...
  • 寫在開頭 今天就放假了,照理說應該寫今年的總結了,但是回頭一看,很久沒有寫過技術類的文字了,還是先不吐槽了。 關於文件緩存 寫了很多的代碼,常常在寫EXE(定時任務)或者寫小站點(數據的使用和客戶端調用之間)都需要用到緩存,數據在記憶體和文本都保留一個整體。 當然也可以寫到資料庫,不過個人覺得不方便查 ...
  • 在現在的軟體編程中,不可避免的會用到多線程或者其他方式來實現非同步的目的,那麼,線程是個什麼東西,如何使用?這些都是需要去學習與摸索的東西。不過在學習線程之前,還是有一些知識需要掌握的,雖說都是書本上的東西,但是還是對線程的學習有一定的作用的。 進程 目的 現在的電腦存在很多的操作系統(OS),大部 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...