systemd詳解
一:描述
CentOS 7 使用systemd替換了SysV。Systemd目的是要取代Unix時代以來一直在使用的init系統,相容SysV和LSB的啟動指令碼,而且夠在程式啟動過程中更有效地引導載入服務。
systemd的特性有:
1.支援並行化任務
2.同時採用socket式與D-Bus匯流排式啟用服務。 按需啟動守護程式(daemon);
3.利用 Linux 的 cgroups 監視程式;
4.支援快照和系統恢復;
5.維護掛載點和自動掛載點;
6.各服務間基於依賴關係進行精密控制。
二:命令
使用 systemctl 控制單元時,通常需要使用單元檔案的全名,包括副檔名(例如 sshd.service)。但是有些單元可以在systemctl中使用簡寫方式。
1.如果無副檔名,systemctl 預設把副檔名當作 .service。例如 netcf g 和 netcfg.service 是等價的。
2.掛載點會自動轉化為相應的 .mount 單元。例如 /home 等價於 home. mount。
3.裝置會自動轉化為相應的 .device 單元,所以 /dev/sda2 等價於 de v-sda2.device。
1.systemctl
該命令可用於檢視系統狀態和管理系統及服務。該命令等同於 systemctl list-units
2.systemctl --failed
輸出執行失敗的單元
3.systemctl start <單元>
啟用單元
4.systemctl stop <單元>
停止單元
5.systemctl restart <單元>
重啟單元
6.systemctl reload <單元>
重新讀取配置
7.systemctl status <單元>
檢視執行狀態
8.systemctl enable <單元>
開啟自動啟用單元
9.systemctl is-enabled <單元>
檢查是否自動啟動
10.systemctl disable <單元>
取消開機自動啟用單元
三:單元檔案編寫
systemd單元檔案的語法來源於 XDG桌面入口配置檔案.desktop檔案,最初的源頭則是Microsoft Windows的.ini檔案。單元檔案可以從兩個地方載入,
優先順序從低到高分別是:
1. /usr/lib/systemd/system/: 軟體包安裝的單元
2. /etc/systemd/system/: 系統管理員安裝的單元
編寫自定義的 service 檔案時,可以選擇幾種不同的服務啟動方式。啟動方式可透過配置檔案 [Service] 段中的 Type= 引數進行設定。 ?
1.Type=simple(預設值):systemd認為該服務將立即啟動。服務程式 不會fork。如果該服務要啟動其他服務,不要使用此型別啟動,除非該服務是socket啟用型。 ?
2.Type=forking:systemd認為當該服務程式fork,且父程式退出後服務 啟動成功。對於常規的守護程式(daemon),除非你確定此啟動方式無法滿足需求,使用此型別啟動即可。使用此啟動型別應同時指定 PIDFile=,以便systemd能夠跟蹤服務的主程式。 ?
3.Type=oneshot:這一選項適用於只執行一項任務、隨後立即退出的服務。 可能需要同時設定 RemainAfterExit=yes 使得 systemd 在服務程式退出之後仍然認為服務處於啟用狀態。
4.Type=notify:與 Type=simple 相同,但約定服務會在就緒後向 syst emd 傳送一個訊號。這一通知的實現由 libsystemd-daemon.so 提供。 ?
5.Type=dbus:若以此方式啟動,當指定的 BusName 出現在DBus系統總 線上時,systemd認為服務就緒。 ?
6.Type=idle: systemd會等待所有任務(Jobs)處理完成後,才開始執行i dle型別的單元。除此之外,其他行為和Type=simple 類似
四:舉例
CentOS 7 使用systemd替換了SysV。Systemd目的是要取代Unix時代以來一直在使用的init系統,相容SysV和LSB的啟動指令碼,而且夠在程式啟動過程中更有效地引導載入服務。
systemd的特性有:
1.支援並行化任務
2.同時採用socket式與D-Bus匯流排式啟用服務。 按需啟動守護程式(daemon);
3.利用 Linux 的 cgroups 監視程式;
4.支援快照和系統恢復;
5.維護掛載點和自動掛載點;
6.各服務間基於依賴關係進行精密控制。
二:命令
使用 systemctl 控制單元時,通常需要使用單元檔案的全名,包括副檔名(例如 sshd.service)。但是有些單元可以在systemctl中使用簡寫方式。
1.如果無副檔名,systemctl 預設把副檔名當作 .service。例如 netcf g 和 netcfg.service 是等價的。
2.掛載點會自動轉化為相應的 .mount 單元。例如 /home 等價於 home. mount。
3.裝置會自動轉化為相應的 .device 單元,所以 /dev/sda2 等價於 de v-sda2.device。
1.systemctl
該命令可用於檢視系統狀態和管理系統及服務。該命令等同於 systemctl list-units
2.systemctl --failed
輸出執行失敗的單元
3.systemctl start <單元>
啟用單元
4.systemctl stop <單元>
停止單元
5.systemctl restart <單元>
重啟單元
6.systemctl reload <單元>
重新讀取配置
7.systemctl status <單元>
檢視執行狀態
8.systemctl enable <單元>
開啟自動啟用單元
9.systemctl is-enabled <單元>
檢查是否自動啟動
10.systemctl disable <單元>
取消開機自動啟用單元
三:單元檔案編寫
systemd單元檔案的語法來源於 XDG桌面入口配置檔案.desktop檔案,最初的源頭則是Microsoft Windows的.ini檔案。單元檔案可以從兩個地方載入,
優先順序從低到高分別是:
1. /usr/lib/systemd/system/: 軟體包安裝的單元
2. /etc/systemd/system/: 系統管理員安裝的單元
編寫自定義的 service 檔案時,可以選擇幾種不同的服務啟動方式。啟動方式可透過配置檔案 [Service] 段中的 Type= 引數進行設定。 ?
1.Type=simple(預設值):systemd認為該服務將立即啟動。服務程式 不會fork。如果該服務要啟動其他服務,不要使用此型別啟動,除非該服務是socket啟用型。 ?
2.Type=forking:systemd認為當該服務程式fork,且父程式退出後服務 啟動成功。對於常規的守護程式(daemon),除非你確定此啟動方式無法滿足需求,使用此型別啟動即可。使用此啟動型別應同時指定 PIDFile=,以便systemd能夠跟蹤服務的主程式。 ?
3.Type=oneshot:這一選項適用於只執行一項任務、隨後立即退出的服務。 可能需要同時設定 RemainAfterExit=yes 使得 systemd 在服務程式退出之後仍然認為服務處於啟用狀態。
4.Type=notify:與 Type=simple 相同,但約定服務會在就緒後向 syst emd 傳送一個訊號。這一通知的實現由 libsystemd-daemon.so 提供。 ?
5.Type=dbus:若以此方式啟動,當指定的 BusName 出現在DBus系統總 線上時,systemd認為服務就緒。 ?
6.Type=idle: systemd會等待所有任務(Jobs)處理完成後,才開始執行i dle型別的單元。除此之外,其他行為和Type=simple 類似
四:舉例
點選(此處)摺疊或開啟
-
[Unit]
-
Description=Docker Application Container Engine
-
Documentation=http://docs.docker.com
-
After=network.target
-
Wants=docker-storage-setup.service
-
Requires=docker-cleanup.timer
-
-
[Service]
-
Type=notify
-
NotifyAccess=all
-
KillMode=process
-
EnvironmentFile=-/etc/sysconfig/docker
-
EnvironmentFile=-/etc/sysconfig/docker-storage
-
EnvironmentFile=-/etc/sysconfig/docker-network
-
Environment=GOTRACEBACK=crash
-
Environment=DOCKER_HTTP_HOST_COMPAT=1
-
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
-
ExecStart=/usr/bin/dockerd-current \
-
--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
-
--default-runtime=docker-runc \
-
--exec-opt native.cgroupdriver=systemd \
-
--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
-
$OPTIONS \
-
$DOCKER_STORAGE_OPTIONS \
-
$DOCKER_NETWORK_OPTIONS \
-
$ADD_REGISTRY \
-
$BLOCK_REGISTRY \
-
$INSECURE_REGISTRY
-
ExecReload=/bin/kill -s HUP $MAINPID
-
LimitNOFILE=1048576
-
LimitNPROC=1048576
-
LimitCORE=infinity
-
TimeoutStartSec=0
-
Restart=on-abnormal
-
MountFlags=slave
-
-
[Install]
- WantedBy=multi-user.target
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2144389/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- systemd - yocto linux如何整合&配置systemdLinux
- systemd - Android系統如何整合&配置systemdAndroid
- systemd 和 如何修改和建立一個 systemd service (Understanding and administering systemd)
- systemd service unit
- systemd工具集
- Systemd簡介與使用
- Systemd 定時器教程定時器
- 使用 systemd 執行 Horizon
- systemd-nspawn 快速指南
- 利用 systemd 部署 golang 專案Golang
- systemd程式管理工具
- Linux:使用systemd管理程式Linux
- Systemd設定程式保護
- 使用Systemd執行Docker容器Docker
- Systemd 入門教程:命令篇
- 使用systemd部署r-nacos
- 通過 Systemd Journal 收集日誌
- Linux守護程式及SystemdLinux
- 如何建立systemd定時任務
- WSL2安裝systemd方法
- Systemd 入門教程:實戰篇
- Node 應用的 Systemd 啟動
- [轉]Systemd 入門教程:命令篇
- 使用 restic 和 systemd 自動備份REST
- RocketMQ系列:使用systemd管理nameserver和brokerMQServer
- systemd 編寫服務管理指令碼指令碼
- Node應用的Systemd啟動(轉)
- Linux服務管理神器:SYSTEMD介紹Linux
- systemd程式管理工具實戰教程
- Fedora 中的容器技術:systemd-nspawn
- http協議/cookie詳解/session詳解HTTP協議CookieSession
- 如何使用Journalctl檢視並操作Systemd日誌
- CentOS8中systemd配置檔案說明CentOS
- 走進Linux之systemd啟動過程Linux
- Debian技術委員會傾向採用Systemd
- Lombok 註解詳解Lombok
- Java註解詳解Java
- Java 註解詳解Java