systemd

systemd的新特性(centos 7)

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

按需激活進程,在此之前可以讓進程處于半活動狀態

系統狀態快照:能夠自我保存當前系統上沒一個用戶空間的進程運行狀態快照,將來可以迅速恢復到某一種狀態,因此用戶空間有了時間機器??梢曰貪L到過去某一時刻的狀態

內在的基于依賴關系定義的服務控制邏輯

對與systemd來講,引入了一個新的核心概念,叫做unit(單元)

核心概念:unit

unit由其相關的配置文件標識、識別和配置:意思就是每一個unit到底定義了與否主要就看他有沒有配置文件。這中文件中主要包含了系統服務、監聽的端口。保存的快照以及其他與init相關的信息;因此他們就分成了這樣幾種類別;系統服務類unit、監聽端口類unit、快照類的unit以及其他的unit,而這些配置文件主要保存在;

/usr/lib/systemd/system

/run/systemd/system

/etc/systemd/system

所以說這些目錄中的每一個文件都成為unit文件,我們進入到這些目錄中可以看到許多文件,以文件的后綴名就可以進行識別,以.service結尾的文件為服務類的unit、以.target結尾的文件為目標類的unit、以.socket結尾的文件為監聽端口類的unit…;常用的類別如下;

unit的常見類型:

service unit:

文件擴展名為.service,主要用于定義系統服務;所以他類似我們之前使用service httpd {start|restart|status|stup}等相關操作的一些服務腳本,所以他扮演了以前由/etc/inin.d下的服務腳本所扮演的角色。所以說systemctl啟動一個服務的時候主要就是靠這個目錄下以.service結尾的unit配置文件,這個文件比此前/etc/init.d下的腳本寫起來要容易的多

target unit:

文件擴展名為.target,主要用于模擬實現“運行進別”;起始對與systemd而言沒有運行級別一說,他的管理法則與sysV和upstart完全是兩回事。

device unit:

文件擴展名為.device,主要用于定義內核識別的設備;一次systemd也能夠實現對/dev目錄下硬件進行識別

mount unit:

文件擴展名為.mount,主要用于定義文件系統掛載點

socket unit:

文件擴展名為.socket,主要用于標識進程間通訊用到的socket文件;我們知道某一個服務啟動并監聽在某套件字上時就需要先創建一個套接字文件,而這些就是由socket unit來負責管理的。

snapshot unit:

文件擴展名為.snapshot,主要用于管理系統快照

swap unit:

文件擴展名為.swap,主要用于標識、管理swap設備

automount unit:

文件擴展名為.automount,主要用于文件系統的自動掛載點設置

path unit:

文件擴展名為.path,主要用于定義文件系統中的一個文件或目錄;他能夠監控指定特定路徑下的文件或目錄,如果該目錄或文件不存在systemd會自動創建之

關鍵特性:

基于socket的激活機制:

也就意味著socket與程序是分離的;我們可以在某個服務啟動時先把socket分配給它,但是這個進程可以先不啟動。

基于bus的激活機制;

如果總線上存在對某個服務的訪問,就基于總線的請求將其激活

基于device的激活機制;

當某個設備插入的時候,它能夠自動去激活mount unit、device unit、automount unit.他能夠監控當前系統上或內核中所輸出的硬件信息,一旦發現某一硬件來了,
就先創建設備文件,再將其自動掛載至某掛載點,如果掛載點不存在還能自動創建。

基于path的激活機制

系統可以監控某個目錄或文件在不在,如何某個文件在了就能立刻激活某一個服務,或者能激活另外一個進程。比方說萬一某一個進程在運行當中遇到bug崩潰了,
崩潰的時候創建了一個log文件,一旦systemd發現了這個文件就立即去激活一個額外的程序去檢測,例如激活一個窗口去提醒用戶。

系統快照:

他的好處在于保存各unit的當前狀態,因為systemd的所有管理功能都是通過unit來實現的,因此他能保存各unit的當前狀態信息于持久存儲設備中;
所以將來如果需要回到某一時刻的時候就可以回滾,讓用戶可在過去與現在之間游走。

向后兼容sysV init腳本;

這就意味著放在/etc/init.d/下的服務腳本,也一樣能夠靠systemd來啟動控制,但是他也有不兼容的內容;
不兼容:
    systemctl的命令是固定不變的;
    非由systemd啟動的服務,systemctl無法與之通信,也就意味著無法控制此服務。

如何管理系統服務;

centos 7:系統服務主要是靠service類型的unit文件來實現管控的,而且兼容/etc/init.d/下的給類型服務腳本

systemctl命令
    systemctl [options...] command [name...]

    啟動:service name start ==> systemctl start name.service
    停止:service name stop ==> systemctl stop name.service
    重啟:service name restart ==> systemctl restart name.service
    狀態:service name status ==> systemctl status name.service
    條件式重啟:service name condrestart ==> systemctl try-restart name.service
    重載或重啟服務:systemctl reload-or-restart name.service
    重載或條件式重啟服務:systemctl reload-or-try-restart name.service

    查看某服務當前激活與否的狀態:systemctl is-active name.service
    查看所有已激活的服務:systemctl list-units --type service
    查看所有服務(已激活及未激活):chkconfig --list ==> systemctl list-units -t service --all  

    設置服務開機自啟:chkconfig name on ==> systemctl enable name.service
    禁止服務開機自啟:chkconfig name off ==> systemctl disable name.service
    查看某服務是否能夠開機自啟:chkconfig --list name ==> systemctl is-enabled name.service

    禁止某服務設定為開機自啟和手動啟動:systemctl mask name.service
    取消此禁止:systemctl unmask name.service

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

如何管理target unit:

運行級別:

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

查看當前運行級別:

runlevel ==> systemctl list-unit --type target

查看所有級別:

systemctl list-units -t target -a

獲取默認運行級別:

systemctl get-default

修改默認運行級別:

systemctl set-default name.target

切換至緊急救援模式:

systemctl rescue

切換至emergency(緊急)模式:(不裝載設備驅動,也不啟動/etc/init.d/下的系統設定腳本)

systemctl emetgency

其他常用命令

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

/usr/lib/systemd/system和/etc/systemd/system/的聯系

systemdsystemdsystemd

所謂獲取默認運行級別或者設定默認運行級別就是把/etc/systemd/system/目錄下的文件向對應的連接修改了而已.
他們是用于設定運行級別以及每一個級別下啟動的服務和服務之間的依賴關系的

service unit文件是如何組織的

service unit file:

以httpd為例;(這里vim打開httpd.service文件為例) systemd 此文件通常由三段配置組成;unit,service,install

unit:定義與unit類型無關的通用選項;用于提供unit的描述信息,unit行為及依賴關系等
service:與特點類型相關的專用選項:此處為service類型
install:定義由"systemctl enable"以及"systemctl disable"命令在是實現服務啟用或禁用時用到的一些選項
unit段的常用選項
Descrription:描述信息;意義性描述
After:定義unit的啟動次序;表示當前unit應該晚于哪些unit啟動;其功能與Before相反
Requies:依賴到的其他units;強依賴,被依賴到的units無法激活時,當前units即無法激活
Wants:指明依賴到的其他unit;弱依賴,被依賴到的units無法激活時,不影響當前units的激活
Conflicts:定義units間的沖突關系
service段的常用選項:
Type:用于定義影響ExecStart及相關參數的功能的unit進程啟動類型;
    類型:
        simple:表示Execstart指明的程序所啟動的進程是一個主進程
        foeking:表示由Execstart指明的程序所啟動的進程生成的一個子進程將成為主進程
        oneshot:功能類似與simple,不過在啟動后續units之前主進程將會退出.
        dbus:功能也類似與simple,但是后續的units盡在主進程得到dbus名稱之后才能啟動
        notify:類似與simple,它表示后續的units僅在通過sdnotify函數發送通知以后,才能運行這個命令.
        idle:類似與simple
Environmentfile:環境配置文件,此文件會在Execstart之前被讀取,并為Execstart提供一些變量等自定義功能
Execstart:指明啟動unit要運行的命令或腳本;ExecStartpre,ExecStartpost
ExecStop:指明停止unit要運行的命令腳本
Restart:表示啟動了此項會導致進程退出后重啟相關服務的;意思就是進程如果以外終止了,他會自動將其重新啟動起來
Install段的常用選項:
Alias:表示當前unit的別名
RequiredBy:被哪些units所依賴
WantedBy:被哪些units所依賴

注意:對于新創建的unit文件或修改了的unit文件,要通知systemd重載此配置文件;命令如下;

# systemctl daemon-reload

原創文章,作者:M20-1馬星,如若轉載,請注明出處:http://www.www58058.com/48727

(0)
M20-1馬星M20-1馬星
上一篇 2016-09-23 15:43
下一篇 2016-09-23 16:18

相關推薦

  • 8-8 處理文本工具sed及vim文本編輯工具

    處理文本工具sed及vim文本編輯工具 Sed:   sed是一種在線編輯器、行編輯器,一次處理一行內容。在處理時,把當前處理的行存儲在臨時緩沖區中,該緩沖區稱為“模式空間”,接著用sed命令處理緩沖區中的內容,處理完畢后,把緩沖區的內容送到標準輸出;然后緊接著處理下一行,重復完成相同的操作,直到文件末尾;sed處理的整個過程中,對象文件…

    Linux干貨 2016-08-11
  • 隨筆—git的基本命令

    git是一個非常優秀的版本控制系統,可以對各類大小的項目進行源代碼管理,  #git的常用功能如下: 1、從服務器上克隆完整的Git倉庫(包括代碼和版本信息)到單機上。 2、在本地倉庫上根據不同的開發目的,創建分支,修改代碼。 3、在本機上向自己創建的分支上提交代碼。 4、在本機上合并分支。 5、將本地倉庫代碼和分支推送到服務器上的遠程倉庫 在官網…

    Linux干貨 2016-07-04
  • Linux用戶和組管理

      用戶和組管理類命令的使用方法 Liunx用戶組管理命令: groupadd命令:添加組     命令用法:         groupadd [選項] group_name   &nbs…

    Linux干貨 2016-11-25
  • 一起學DNS系列(十四)DNS查詢工具之DIG的使用(2)

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://jeffyyko.blog.51cto.com/28563/240243    上節談到了利用DIG的+trace參數追蹤域名解析的過程,其實除此之外,DIG還有一些其他的參數,這節會涉及到這…

    2015-03-17
  • N22-第二周作業

    Linux上的文件管理類命令有哪些,其常用使用方法及其相關示例演示。 文件管理類命令有:cp,mv,rm cp:復制文件或者目錄   單源復制:cp [OPTION]… [-T] SOURCE DEST        多源復制:cp [OPTION]… SOURCE… DI…

    Linux干貨 2016-09-19
  • LVM邏輯卷管理相關命令的用法

    前提:創建分區,文件或添加硬盤作為LVM的物理卷 pv(物理卷) 命令用法 1、pvcreate創建pv pvcreate -s    指定PE大小,默認為4M 2、pvremove刪除pv 3、pvs,pvdisplay顯示pv pvs 顯示pv摘要 pvdisplay 詳細顯示pv 4、pvmove:把卷組中一個物…

    Linux干貨 2016-08-30

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-26 09:58

    總結的很好,通讀下來能學到很多東西,受教了。

欧美性久久久久