systemd
-
啟動流程:
POST -> BIOS -> MBR bootloader -> kernel 臨時根 -> 根文件系統 -> init-
init
能夠管理、控制init進程的模塊,就是init系統
能夠讓系統在用戶預定義的級別下運行
-
init
-
設備管理器:
-
sysvinit : CentOS 5
- 第一個廣泛應用的init系統
-
簡單、穩定:
-
只需要編寫服務的啟動腳本
設置啟動順序時,通過連接即可完成
-
只需要編寫服務的啟動腳本
-
執行效率較高,需要時間較長
- 對新的Linux特性 支持不夠好
-
upstart: CentOS 6
-
啟動速度大大提高
反向兼容sysvinit
設計更先進
-
啟動速度大大提高
-
systemd: CentOS 7
-
替代了所有的sysvinit的功能,并且添加更多的功能。
極大提高了啟動速度
標準化管理
按需激活進程:分配套接字,但不啟動服務
系統狀態快照
-
替代了所有的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:控制組; 實現內核資源合理分配的機制
-
擴展名.mount,定義文件系統的默認掛載點
-
automount類型:自動掛載類型
- 擴展名.automount,定義文件系統自動掛載點設備
-
target類型:啟動目標類型
- 擴展名.target 用來模擬實現“運行級別”
-
snapshot類型:快照類型
- 擴展名.snapshot,用來管理系統快照
-
swap類型:交換分區類型
- 擴展名.swap,用來標識swap設備、管理和定義交換分區
-
path類型 監視文件類型
- 擴展名.path,用來定義文件系統的某一文件或目錄
-
timer 任務計劃
slice 資源控制
scope 外部進程
-
service類型:服務類型
-
關鍵特性:
-
基于socket的激活機制
socket與程序之間分離,可以先分配socket,不啟動; -
基于bus的激活機制
若總線上存在對某一服務的訪問,可以基于該請求,將設備激活 -
基于device的激活機制
當接入新設備時,激活device unit、mount unit、automount unit
首先創建設備文件,再自動掛載到某掛載點,若掛載點不存在,則自動創建 。 - 基于PATH的激活機制
-
系統快照
能夠將各個unit的當前狀態信息保存至持久存儲設備中 -
向后兼容 sysv init腳本
/etc/init.d/服務腳本,也能夠通過 systemd 啟動
-
基于socket的激活機制
-
不兼容的特性:
- systemctl的命令是固定不變的
- 若服務不是通過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.service9、查看服務當前的激活狀態:systemctl is-active NAME.service
服務啟動則返回active;服務未啟動則返回unknown
10、查看所有已激活的服務:systemctl list-units -t service
11、查看所有服務:chkconfig –list -> systemctl list-units -t service -a12、設置服務開機自啟:chkconfig NAME on -> systmectl enable NAME.service
13、禁止服務開機自啟:chkconfig NAME off -> systemctl disable NAME.service
14、查看服務是否能開機自啟:chkconfig –list NAME -> systemctl is-enabled NAME.service15、禁止某服務設定為開機自啟:systemctl mask NAME.service
16、取消此禁止:systemctl unmask NAME.service17、查看服務的依賴關系: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 -a5、獲取默認運行級別:systemctl get-default
6、修改默認運行級別:systemctl set-default NAME.target
7、centos 6:修改 /etc/inittab8、切換緊急救援模式(啟動級別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