systemd

systemd

  • 啟動流程:
    POST -> BIOS -> MBR bootloader -> kernel 臨時根 -> 根文件系統 -> init

    • init
      能夠管理、控制init進程的模塊,就是init系統
      能夠讓系統在用戶預定義的級別下運行
  • 設備管理器:

    • sysvinit : CentOS 5

      • 第一個廣泛應用的init系統
      • 簡單、穩定:

        • 只需要編寫服務的啟動腳本
          設置啟動順序時,通過連接即可完成
      • 執行效率較高,需要時間較長

        • 對新的Linux特性 支持不夠好
    • upstart: CentOS 6

      • 啟動速度大大提高
        反向兼容sysvinit
        設計更先進
    • systemd: CentOS 7

      • 替代了所有的sysvinit的功能,并且添加更多的功能。
        極大提高了啟動速度
        標準化管理
        按需激活進程:分配套接字,但不啟動服務
        系統狀態快照

systemd配置:

  • 核心:unit
    由其相關配置文件進行標識、識別和配置;文件中主要包含了系統服務、監聽的socket、保存的快照以及其他與init相關的信息;這些配置文件主要保存:

    • /usr/lib/systemd/system
    • /run/systemd/system
    • /etc/systemd/system
  • unit常見類型:

    • service類型:服務類型

      • 擴展名.service,用于定義系統服務;
    • socket類型:套接字類型

      • 擴展名.socket,標示進程間通信時使用到的socket文件
    • device類型:設備類型

      • 擴展名.device,定義內核能夠識別的設備
    • mount類型:掛載點類型

      • 擴展名.mount,定義文件系統的默認掛載點
        cgroup:控制組; 實現內核資源合理分配的機制
    • automount類型:自動掛載類型

      • 擴展名.automount,定義文件系統自動掛載點設備
    • target類型:啟動目標類型

      • 擴展名.target 用來模擬實現“運行級別”
    • snapshot類型:快照類型

      • 擴展名.snapshot,用來管理系統快照
    • swap類型:交換分區類型

      • 擴展名.swap,用來標識swap設備、管理和定義交換分區
    • path類型 監視文件類型

      • 擴展名.path,用來定義文件系統的某一文件或目錄
    • timer 任務計劃
      slice 資源控制
      scope 外部進程
  • 關鍵特性:

    1. 基于socket的激活機制
      socket與程序之間分離,可以先分配socket,不啟動;
    2. 基于bus的激活機制
      若總線上存在對某一服務的訪問,可以基于該請求,將設備激活
    3. 基于device的激活機制
      當接入新設備時,激活device unit、mount unit、automount unit
      首先創建設備文件,再自動掛載到某掛載點,若掛載點不存在,則自動創建 。
    4. 基于PATH的激活機制
    5. 系統快照
      能夠將各個unit的當前狀態信息保存至持久存儲設備中
    6. 向后兼容 sysv init腳本
      /etc/init.d/服務腳本,也能夠通過 systemd 啟動
  • 不兼容的特性:

    1. systemctl的命令是固定不變的
    2. 若服務不是通過systemctl啟動的服務,那么systemctl無法與之通信,無法控制服務;
  • 管理service units

    • CentOS 7:service類型的unit文件
      systemctl [OPTIONS…] COMMAND NAME.service
      1、命令:service -> systemctl
      2、啟動服務:service NAME start -> systemctl start NAME.service
      3、關閉服務:service NAME stop -> systemctl stop NAME.service
      4、重啟:service NAME restart -> systemctl restart NAME[.service]
      5、查看狀態:service NAME status -> systemctl status NAME.service
      6、條件式重啟:service NAME condrestart -> systemctl try-restart NAME.service
      若服務已啟動,則重啟;若服務未啟動,則放棄操作
      7、重載或重啟:systemctl reload-or-restart NAME.service
      可以重載則重載;重新加載未成功,則重新啟動
      重載:在不停止的情況下重新加載配置文件
      重啟:先stop再start
      8、重載或條件式重啟:systemctl reload-or-try-restart NAME.service

      9、查看服務當前的激活狀態:systemctl is-active NAME.service
      服務啟動則返回active;服務未啟動則返回unknown
      10、查看所有已激活的服務:systemctl list-units -t service
      11、查看所有服務:chkconfig –list -> systemctl list-units -t service -a

      12、設置服務開機自啟:chkconfig NAME on -> systmectl enable NAME.service
      13、禁止服務開機自啟:chkconfig NAME off -> systemctl disable NAME.service
      14、查看服務是否能開機自啟:chkconfig –list NAME -> systemctl is-enabled NAME.service

      15、禁止某服務設定為開機自啟:systemctl mask NAME.service
      16、取消此禁止:systemctl unmask NAME.service

      17、查看服務的依賴關系:systemctl list-dependencies NAME.service

  • 管理target units
    1、設置運行級別

    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

    2、切換運行級別:init N -> systemctl isolate NAME.target

    3、查看當前激活的運行級別:runlevel -> systemctl list-units -type target
    4、查看當前所有激活的運行級別:runlevel -> systemctl list-units -type target -a

    5、獲取默認運行級別:systemctl get-default
    6、修改默認運行級別:systemctl set-default NAME.target
    7、centos 6:修改 /etc/inittab

    8、切換緊急救援模式(啟動級別1):systemctl rescue
    9、切換emergency模式:

    其它相關命令:
    關機:systemctl halt,systemctl poweroff
    重啟:systemctl reboot
    掛起:systemctl suspend
    快照:systemctl hibernate
    快照并掛起:systemctl hybrid-sleep

  • service units file:

    [unit]:定義與unit類型無關的通用選項;用于提供unit的描述信息、unit行為及依賴關系;
      description: 描述信息;意義性描述;
      after:定義unit的啟動次序;表示當前unit應該晚于哪些unit啟動;其功能與before相反;
      requies:依賴到的其他units;強依賴,被依賴的units無法激活,當前unit即無法激活;
      wants:依賴到的其他units;弱依賴,被依賴的units無法激活,不妨礙當前unit激活
      conflicts:定義units間的沖突關系;
    
    [service]:與特定類型相關的專用選項;此處為service類型;
      type:用于定義影響execstart及相關參數的功能的unit進程啟動類型;
        類型:
          simple:默認值,定義execstart選項指定的程序是主程序
          forking:定義execstart選項調用的某一子進程做主程序,之后父進程會退出。 
          oneshot:
          dbus:
          notify:類似于simple,進程在收到notify函數的通知時才啟動
          idle:類似于simple
      ExecStart:指明啟動unit要運行命令或腳本;execstartpre,execstartpost
      ExecStop指明停止unit要運行的命令或腳本;
      Restart
    
    [install]:定義由“systemctl enable”以及“systemctl disable”命令在實現服務啟用或禁用時用到的選項;
      alias
      wantedby:被哪些units所依賴;弱依賴
      requiredby:被哪些units所依賴;強依賴

    注意:對于新創建的units文件或修改了的units文件,要通知systemd重載此配置文件;
    使用:systemctl daemon-reload

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

(0)
ss
上一篇 2017-05-21
下一篇 2017-05-21

相關推薦

  • 認識shell

    一、認識shell 什么是shell?shell為單詞外殼的意思。那么這是誰的外殼?我們知道一個系統中實際工作的是那些硬件,cpu、內存、磁盤等。我們如何調用這些硬件為我們工作?實際上,硬件是由內核kernel控制的。我們可以通過kernel控制硬件,但我們不能直接和內核kernel交流。我們需要一個外殼,這個外殼就是shell來溝通kernel。何為she…

    Linux干貨 2015-09-22
  • linux系統啟動詳解

    主要內容: 系統啟動過程 init啟動過程 chkconfig的增,刪,查 Linux組成 Linux: kernel+rootfs  kernel: 進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能  rootfs:程序和glibc 庫:函數集合, function, 調用接口…

    Linux干貨 2016-09-08
  • 第一周-Linux Basic

        本文主要介紹了計算機的組成及功能、Linux的發行版、Linux哲學思想、一些基本命令、命令幫助的獲取、文件系統層級結構標準。 一、計算機的組成及功能     計算機由硬件和軟件兩大類組成     硬件   &n…

    Linux干貨 2016-11-28
  • N23-第二周博客作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 文件管理工具:cp,mv,rm    cp命令:cope       源文件:目標文件       單源復制:cp [OPTION]… [-T] SOURCE DEST …

    Linux干貨 2016-12-05
  • 如何將遷移home到獨立分區中

        背景(centos7中):         由于在剛開始學習linux時磁盤分配追求簡單,只是把一個磁盤簡單的分了3個分區?,F在,因用戶數據增多、磁盤空間變少、當數據撐滿磁盤時,會導致系統崩潰。為防止此種情況的發生我必須把把根下的/home 目錄遷移出 來獨立分…

    2017-08-10
欧美性久久久久