從Centos7.0以后,red hat系列的發(fā)行版都放棄了使用多年的System V開機啟動服務(wù)(即init啟動腳本的方法)半抱。而使用Systemd這個啟動服務(wù)管理機制炼幔。
好處:
并行處理所有服務(wù)乃秀,加速開機流程:舊的init啟動腳本是“一項一項任務(wù)依序啟動”的模式,因此不相依的服務(wù)也是得要一個一個的等待刀脏,而systemd可以讓所有服務(wù)同時啟動。
一經(jīng)要求就回應(yīng)的on-demand啟動方式:systemd全部就是僅有一只systemd服務(wù)搭配systemctl指令來處理暂雹,無須其他額外的指令來支持。不像systemV還要init,chkconfig,service...等等指令挥下。此外现斋,systemd由于常駐內(nèi)存,因此任何要求(on-demand)都可以立即處理后續(xù)的daemon啟動的任務(wù)限书。
-
服務(wù)相依性的自我檢查:因此如果B服務(wù)是架構(gòu)在A服務(wù)上面啟動的倦西,那當(dāng)你在沒有啟動A服務(wù)的情況下僅手動啟動B服務(wù)時扰柠,systemd會自動幫你啟動A服務(wù)蝙泼。
配置文件放置目錄:
-
/usr/lib/systemd/system/:每個服務(wù)最主要的啟動腳本設(shè)置汤踏,有點類似/etc/init.d/的文件。對于支持systemd的程序载荔,安裝成功后會會自動在該目錄下添加一些配置文件丘损。如通過yum安裝了docker之后徘钥,在該目錄下就會多了一些相應(yīng)配置文件
圖片.png /run/systemd/system/: 系統(tǒng)執(zhí)行過程中所產(chǎn)生的服務(wù)腳本,這些腳本的優(yōu)先序要比上一個高沙廉。
-
/etc/systemd/system: 存放系統(tǒng)開機啟動的服務(wù),這是因為開機時systemd只執(zhí)行/etc/systemd/system目錄里面的配置文件巨税。其實就是存放一些鏈接到/usr/lib/systemd/system/的鏈接文件而已。如使用systemctl enable docker 啟動docker的開機自啟動远寸,其實就是在該目錄下創(chuàng)建一個鏈接到/usr/lib/systemd/system/docker.service的鏈接文件蝇狼。
圖片.png
Unit
systemd 可以管理所有系統(tǒng)資源。不同的資源統(tǒng)稱為 Unit(單位)颤专。通過觀察/usr/lib/systemd/system/下文件的后綴名就可以知道該服務(wù)的unit類型。
Unit 一共分成12種晓避。
- Service unit:主要是系統(tǒng)服務(wù)俏拱,包括服務(wù)器本身所需要的本機服務(wù)以及網(wǎng)絡(luò)服務(wù)都是事格!比較經(jīng)常被使用到的服務(wù)大多是這種類型!所以劣纲,這也是最常見的類型了逢捺!
- Target unit:其實是一群unit的集合,例如multi-user.target其實就是一堆服務(wù)的集合~也就是說味廊,選擇執(zhí)行multi-user.target就是執(zhí)行一堆其他.service或.socket之類的服務(wù)就是了蒸甜!
- Device Unit:硬件設(shè)備
- Mount Unit:文件系統(tǒng)的掛載點
- Automount Unit:自動掛載點
- Path Unit:文件或路徑
- Scope Unit:不是由 Systemd 啟動的外部進(jìn)程
- Slice Unit:進(jìn)程組
- Snapshot Unit:Systemd 快照,可以切回某個快照
- Socket Unit:進(jìn)程間通信的 socket
- Swap Unit:swap 文件
- Timer Unit:定時器
systemctl指令
跟以前systemV需要service/chkconfig/setup/init等指令來協(xié)助不同余佛,systemd就是僅有systemctl這個指令來處理而已柠新。
systemctl [command] [unit] (服務(wù)基本操作)
command主要有:
- start:立刻啟動后面接的unit
- stop:立刻關(guān)閉后面接的unit
- restart:立刻關(guān)閉后啟動后面接的unit,亦即執(zhí)行stop再start的意思reload:不關(guān)閉后面接的- - unit的情況下,重新載入配置文件程梦,讓設(shè)置生效
- enable:設(shè)置下次開機時褒翰,后面接的unit會被啟動
- disable:設(shè)置下次開機時,后面接的unit不會被啟動
- status:目前后面接的這個unit的狀態(tài),會列出有沒有正在執(zhí)行、開機默認(rèn)執(zhí)行否抛杨、登錄等信息等!
- is-active:目前有沒有正在運行中
[root@VM_0_10_centos ~]# systemctl status docker.service //查看docker服務(wù)狀態(tài)
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled /*開機自啟動琅束。static:這個daemon不可以自己啟動(enable不可)埋泵,不過可能會被其他的enabled的服務(wù)來喚醒(相依屬性的服務(wù)); mask:這個daemon無論如何都無法被啟動霉撵!因為已經(jīng)被強制注銷(非刪除)】陶铮可通過systemctl unmask方式改回原本狀態(tài)*/; vendor preset: disabled)
Active: active (running) /*inactive:這個服務(wù)沒有運行*/ since 二 2018-03-06 19:00:00 CST; 1 months 4 days ago
Docs: http://docs.docker.com
Main PID: 4652 (dockerd-current)
Memory: 22.1M
CGroup: /system.slice/docker.service
├─ 4652 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/li...
├─ 4656 /usr/bin/docker-containerd-current -l unix:///var/run/dock...
├─30036 /usr/libexec/docker/docker-proxy-current -proto tcp -host-...
└─30040 /usr/bin/docker-containerd-shim-current 37d0c20b039d243631...
systemctl [command] [--type=TYPE] [--all] (觀察系統(tǒng)上所有服務(wù))
command:
list-units:依據(jù)unit列出目前有啟動的unit。若加上--all才會列出沒啟動的易迹。
list-unit-files:依據(jù)/usr/lib/systemd/system/內(nèi)的文件,列出所有已經(jīng)安裝的unit蔚出。
--type=TYPE:就是之前提到的unittype茁影,主要有service,socket,target等