CentOS7的啟動及Systemd的管理?

CentOS7的啟動流程

    POST–>Boot Sequence–>Bootloader–>kernel+initramfs(initrd)–>rootfs–>/sbin/init

    init:

        CentOS5:SysV init

        CentOS6:Upstart

        CentOS7:Systemd

    blob.png

    Systemd:系統啟動和服務器守護進程管理器,負責在系統啟動或運行時,激活系統資源,服務器進程和其他進程

    blob.png

    Systemd新特性:

        系統引導是實現服務并行啟動

        按需啟動守護進程

        系統狀態快照

        自動化的服務依賴關系

    

    核心概念:unit

        unit表示不同類型的systemd對象,通過配置文件進行標識和配置,文件中主要包含了系統服務,監聽socket,保存的系統快照以及其他與init相關的信息

    配置文件:

        /usr/lib/systemd/system:每個服務最主要的啟動腳本設置,類似于之前的/etc/init.d/

        /run/systemd/system:系統執行過程中產生的服務腳本,比上面目錄優先運行

        /etc/systemd/system:管理員建立的執行腳本,類似于/etc/rc.d/rcN.d/Sxx類的功能,比上面的優先級高


    UNIT類型:

        Systemctl -t help 查看unit類型

    blob.png

        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目錄

        blob.png


    特性:

    關鍵特性:

        基于socket的激活機制:socket與服務程序分離

        基于d-bus的激活機制:系統進程間通信的一種機制 desktop-bus

        基于device的激活機制

        基于path的激活機制

        系統快照:保存個unit的當前狀態信息于持久存儲設備中向后兼容sysv init腳本

    不兼容:

        systemctl命令固定不變,不可擴展

        非有systemd啟動的服務,systemctl無法與之通信和控制


    系統服務管理:

        CentOS7:service unit    注意:能兼容早期的服務腳本

        命令:systemctk Command name.service

        啟動:systemctl name start –> systemctl start name.service

        停止:systemctl name stop –> systemctl stop name.service

        重啟:systemctl name restart –> systemctl restart name.service

        狀態:systemctl name status –> systemctl status name.service 

blob.png

        條件式重啟:以啟動才重啟,否則不做任何操作

        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  

blob.png   

blob.png   

    服務查看

        查看某服務當前激活與否的狀態:

        systemctl is-active name.service

        查看所有已經激活的服務

        systemctl list-units –type service

        查看所有服務

        systemctl list-units –type service -all

        blob.png

        chkconfig命令的對應關系:

        設定某服務開機自啟:

        chkconfig name on –> systemctl enable name.service

        設定某服務開機禁止啟動:

        chkconfig name off –> systemctl disable name.service

        查看所有服務開機的自啟狀態:

        chkconfig –list –> systemctl list-unit-files –type service        

        查看服務是否開機自啟:

        systemctl is-enable name.service

        blob.png

    其他命令:

            查看服務的依賴關系:

        systemctl list-dependencies name.service

        blob.png

        殺掉進程:

        systemctl kill 進程名

    

    服務狀態:

        systemctl list-units –type service –all顯示狀態

        loaded:Unit配置文件已處理

        active(runinng):一次或多次持續處理的運行

        active(exited):成功完成一次性的配置

        active(waiting):運行中,等待一個事件

        inactive:不運行

        enabled:開機啟動

        disabled:開機不啟動

        static:開機不啟動,但可被另一個啟用的服務激活

        blob.png

    運行級別:

        unit配置文件: .target

     級別:

        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

    級別切換;

        init N –> systemctl isolate name.target

        只有/lib/systemd/system/*.target文件中AllowIsolate=yes才能切換(修改文件需執行systemctl daemon-reload才能生效

blob.png

    查看target:

        runlevel    

        systemctl list-units –type target

        systemctl list-units –type target –all

    獲取默認運行級別:

        /etc/inittab–> systemctl get-default

    修改默認級別:

        /etc/inittab –> systemctl set-default name.target   

 blob.png

    其他命令:

        切換至緊急救援模式:

            systemctl rescue

        切換至emergency模式:

            systemctl emergency

        關機:

            systemctl halt/poweroff

        重啟:

            systemctl reboot

        掛起:

            systemctl suspend 數據還保存在內存中

        休眠:

            systemctl hibernate 數據寫入磁盤

        休眠并掛起

            systemctl hybri-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執行默認target配置

        其配置文件:/etc/systemd/system/default.target /etc/systemd/system/

    blob.png


   內核參數設置:

    設置內核參數,只影響當次啟動

    啟動時,在linux16行后添加systemd.unit=desired.target

    system.unit=emergency.target

    system.unit=recure.target

    recure.target比emergency支持更多的功能,日志等


   啟動排錯:

    文件系統損壞:

    先嘗試自動修復,失敗則進入emergency shell,提示用戶修復

    在/etc/fstab不存在對應設備的UUID等一段時間,如不可用,進入emergency shell

    在/etc/fstab不存在對應的掛載點,systemd嘗試創建掛載點,否則提示進入emergency shell

    在/etc/fstab不正確的掛載選項,提示進入emergency shell


    破解root口令:

    按e進入編輯模式

    將光標移至linux16行尾,添加內核參數rd.break

    按ctrl+x啟動

    重新掛載根文件系統mount -o remount,rw /sysroot

    切換當前的工作環境至/sysroot:chroot /sysroot

    passwd root

    touch /.autorelabel重新打標簽

    blob.png

    blob.png

    blob.png

    blob.png

    修復Grub2

    引導時進入可以使用命令行的界面

    可從文件系統引導

    只要配置文件/boot/grub2/grub.cfg

    修復配置文件

    grub-mkconfig> /boot/grub2/grub.cfg

    修復grub

    grub2-install /dev/sda BIOS環境

    grub2-install UEFI環境 

    


原創文章,作者:Stupid_L,如若轉載,請注明出處:http://www.www58058.com/48130

(1)
Stupid_LStupid_L
上一篇 2016-09-21
下一篇 2016-09-21

相關推薦

  • 馬哥教育網絡班N22期+第4周課程練習

    馬哥教育網絡班N22期+第4周課程練習 1. 復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 cp -rf /etc/skel /home/tuser1  chmod -R go= tuser1/ 2. 編…

    Linux干貨 2016-09-19
  • week8

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 網橋:          連接不同子網,使其透明通信,它們工作在鏈路層。它們處理的是鏈路層數據,一般來說就是以太     網幀格式的 &nb…

    Linux干貨 2016-12-19
  • 搭建路由環境

        五個虛擬機分別模擬三個路由器和兩個主機,實現不同網段的主機之間的通信。 1.規定四個網段的ip地址:分別是192.168.1.0/24;192.168.2.0/24;192.168.3.0/24;192.168.4.0/24 2.三個路由器命名為R1、R2、R3。R1的兩個網關地址為192.168.1.1和19…

    2017-08-20
  • 【26期】Linux第八周學習小總結

        前言     本周的學習已經過去了,雖然本周學習中老師一直都有說,哎呀,這個不重要,以后有網絡管理員給你們來做,了解一下就行,然而話鋒一轉就又說,其實小公司沒有網絡管理員,如果你們不好好學,以后就會做得更多更雜的工作,這一周的知識點基本上都是在一個pdf上的,大概有200…

    2017-09-02
  • 第四周小結

    這周我們主要學習了寫腳本的簡單語法,寫了一些簡單的腳本,下面就由我來簡單介紹一下: 第一步使用文本編輯來創建腳本: 創建好后在里面寫想要運行的腳本即可,然后按Esc—wq退出保存即可。也可以按q不保存退出;q!不保存強制退出;wq!保存強制退出。 第二步運行腳本,給予執行權限,在命令行上指定腳本的相對路徑和絕對路徑 對了,當在腳本里輸入內容時,要Ese&#8…

    2017-08-06
  • user相關的一些命令及用法

    前言            我們知道,當我們進入一家公司做運維方面的工作的時候,我們需要對公司的服務器進行監控管理,換句話說,我們需要一個身份來操作服務器。那么我們又知道,linux系統下擁有最高權限的管理員是Root,它無所不能,無所畏懼,那么公司肯定就是不會把這個賬戶交給你使用。那么就引出一個概…

    2017-07-22

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-23 11:28

    文章對systemd的相關知識總結的很詳細,截圖說明也很直觀。

欧美性久久久久