天天看點

linux systemd 網絡,Linux Systemd配置檔案詳解

以docker.service為例,說明各個參數的含義:

[Unit] #主要用于配置整個服務的詳情資訊以及服務依賴,用于快速識别該服務的相關情況以及依賴項目

Description=Docker Application Container Engine #服務的簡單描述

Documentation=https://docs.docker.com#指定服務的文檔,便于管理者快速追溯

BindsTo=containerd.service#和Requires類似,但是依賴性更強,這裡列出來的任何服務停止運作或崩潰,該服務将立即被停止。考慮服務的啟動依賴,一般會和After一起使用

After=network-online.target firewalld.service#用于指定該服務在那些服務之後啟動 ,停止時正好相反

Wants=network-online.target#Requires的弱化版,當該服務啟動時,盡可能的啟動該指令指定的服務,但不會影響該服務的啟動

#Before#用于指定該服務在那些服務之前啟動,停止時正好相反

#Requires #設定該服務必須依賴的其他服務,是以在該服務啟動之前,指定的服務清單必須全部線上,否則服務将啟動失敗或掉線。但如果未設定After和Before指令時,該服務和依賴的服務将會并行的同時啟動。注意: 該指令依賴的服務不一定要在整個生命周期都保持一直線上,這取決于其他的檢查條件

#Requisite#和Requires類似,差別是在該服務啟動時,該指令指定的依賴資源必須全部處于啟動成功的狀态,否則該服務立馬失敗,并且不會啟動那些失敗的依賴服務。是以一般建議Requisite和After 一起聯合使用會比較好。

#PartOf#和Requires類似,但僅作用于服務的停止和重新開機,表示該服務是所列服務的一部分,會随指定服務的啟動而啟動。注意: 該指令是單向依賴,服務的主動的重新開機不會影響其他

[Service]#主要用于配置整個服務生命周期的管理行為

Type=notify#設定程序的啟動類型。必須設為 simple, exec, forking, oneshot, dbus, notify, idle 之一

#具體見 “http://www.jinbuguo.com/systemd/systemd.service.html#”

EnvironmentFile=-/etc/sysconfig/docker#指定包含key=value的配置檔案 -$(filename)表示可忽略,即當檔案不存在或環境變量加載失敗時也不影響後續的處理邏輯。

#Environment #指定Key=Value 的環境配置

#程序生命周期管理

ExecStart=/usr/bin/dockerd -H unix:// $DOCKER_OPTS#啟動邏輯, 該指令用于啟動程序的核心邏輯

ExecReload=/bin/kill -s HUP $MAINPID#熱加載, 該指令用于對程序進行熱加載,通常情況用于 配置變更後的熱重新開機

#重新開機政策

TimeoutSec=0#一個同時設定 TimeoutStartSec= 與 TimeoutStopSec= 的快捷方式。

RestartSec=2#多久後重新開機

Restart=always#當服務程序正常退出、異常退出、被殺死、逾時的時候,是否重新啟動該服務。always無條件重新開機

StartLimitBurst=3#啟動的最大次數限制,超過後停止繼續重新開機

StartLimitInterval=60s#啟動時間的最大間隔

#資源限制

LimitNOFILE=infinity#限制程序使用的檔案描述符數量,等同ulimit -n

LimitNPROC=infinity#限制程序的數量,等同于ulimit -u

LimitCORE=infinity#???

TasksMax=infinity

Delegate=yes

KillMode=process#設定在單元停止時,殺死程序的方法。process 表示僅殺死主程序。

[Install]#用于配置服務的安裝級别,當我們設定服務在Linux的那種級别下啟動或開機自啟動時會加載該部分(典型的當chkconfig nginx on或者systemctl enable|disable nginx.service時會讀取該部分的配置)

WantedBy=multi-user.target #設定啟用服務的依賴服務

參考連結:

https://bgbiao.top/post/systemd-doc/

http://www.jinbuguo.com/systemd/systemd.index.html