systemd配置文件及管理方法詳解
一、systemd文件夾配置文件夾:
systemd 配置文件存在於以下三個文件夾中:
①/etc/systemd/system 存放系統啟動的默認級別及啟動的unit的軟連接,優先級最高。
②/run/systemd/system,系統執行過程中產生的服務腳本,優先級次之。
③/usr/lib/systemd/system 存放系統上所有的啟動文件。優先級最低
------------------------------------------------------------------------------------------
unit分類:
unit的定義文件可以根據其後綴名稱識別其定義的類型,可以使用
.servicre定義了系統服務的啟動
.target 定義了系統啟動的級別標簽,systemd 沒有運行級別的概念,創建標簽只是為了兼容老版本。
.socket 定義了進程通信用到的套接字,套接字與進程是分離的
.device 定義了系統啟動時內核識別的文件,systemd提供了設備的管理功能,/dev 下的設備由/etc/udev/下的配置文件與.device共同定制
.mount 定義了系統的文件系統的掛載點
.snapshop 系統快照
.swap 用於標識swap設備
.automount 文件系統的自動掛載點
.path用於定義文件系統中的一個文件或目錄使用。常用於文件系統發生變化時,延遲激活服務。
文件通常由3段組成:
[Unit]
[unit的類型:service target socket]
[install]
[Unit] :不屬於第二個標簽的定義都放在這裏,或存放不屬於unit類型的定義,描述信息,依賴的unit
Description:描述信息
After:表明需要依賴的服務,作用決定啟動順序
Before:表明被依賴的服務
Requles:依賴到的其他unit ,強依賴,即依賴的unit
Wants:依賴到的其他unit,弱依賴,即依賴的unit 啟動失敗。該unit繼續啟動
Conflicts:定義沖突關系
[Unit 類型] :
[Service]:
Type:啟動時關系的定義,
simple:exec啟動的進程就是主進程。
forking :exec 啟動的進程生成的其中一個子進程成為主進程,啟動完成後,舊的主進程會退出。
ontshot:啟動下一個進程前主進程退出。
dbus:
notify:
ldle:
PIDFile=/var/run/sshd.pid
EnvironmentFile 需要使用到的變量的定義文件
ExecStart= 啟動 unit需要執行的命令
ExecStartpre:
ExecStartpost:
ExecStop=停止unit需要執行的命令
Restart:
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[install]:服務啟動或禁用時的一些選項
Alias:
RequlredBy: 被那些unit所依賴,
WanteBy:被那些unit所依賴
註:修改了的unit文件 需要重載。systemctl daemon-reload
----------------------------------------------------------------------------------
二、centos 7 程序管理工具:
centos 7 的程序管理基本上都是由工具systemctl完成,systemctl的控制命令是固定不變的。非systemctl啟動的服務systemctl無法進行管理。systemd 兼容init文件夾下的啟動腳本。
systemctl命令的服務管理的使用:
管理服務通過的service的unit文件實現的。管理unit是通過配置文件實現的(針對服務的unit文件,只有service的配置文件才提供功能)
啟動服務:
systemctl start name.service
停止服務:
systemctl stop name.service
重啟服務:
systemctl restart name.service
查看狀態:
systemctl status name.service
條件式重啟:
即服務之前是啟動的則進行重啟,如果服務沒有啟動則不進行操作
systemctl try-restart name.service
重載或重啟:
首先進行重載,如果重載不成功則進行重啟
systemctl reload-or-restart name.service
重載或條件式重啟:
systemctl reload-or-try-restart name.service
設置服務是否可以被用戶設置開機啟動狀態
systemctl unmask name.service 取消禁止
systemctl mask name.service 禁止
查看服務的當前激活狀態:
服務已經啟動命令的狀態返回值為0 命令未啟動命令的狀態返回值為非0值
systemctl is-active name.service
查看所有已經激活的服務:
-t 指定顯示的unit類型。
--all 顯示更加詳細的信息列表。
-a 等價 --all
systemctl list-units
systemctl list-units -t service
systemctl list-units -t service -a
查看所有服務:
systemctl list-units -a
查看所有服務狀態:
systemctl list-unit-files
-a 、--all : 查看所有服務的狀態
-t 、--type :指定需要查看的unit類型
loaded :配置文件已經加載,載入內存
active(running):一次或多次持續處理的運行
active(exited):成功完成一次性的配置
active(waiting):運行中,等待一個事件
inactive:不運行
enabled:開機啟動
disabled:開機不啟動
static:開機不啟動,但可被另一個啟用的服務激活
用來列出該服務在哪些運行級別下啟用和禁用
ls /etc/systemd/system/*.wants/sshd.service
systemctl list-unit-files --type target --all
設置服務開機不啟動:
systemctl disable 服務名稱unit
查看服務是否開機自啟:
systemctl is-enabled name.service
察看服務的依賴關系:
systemctl list-dependencies name.service
systemctl list-depebdencies
重載服務:
systemctl daemon-reload
殺掉進程:
systemctl kill 進程名
-------------------------------------------------------------------------------------------
三、systemctl命令的系統運行級別的使用:
老版本的sysv以及upstart已經被替換為systemd,但centos7中同樣可以能使用init命令切換級別,而且centos7中並無運行級別的概念,centos老版本中的運行級別也不過就是一個被定義死的對象。centos7 為了兼容老版本定義了與老版本 runlevel{0..6}相對應的target後綴的unit。與啟動級別對應的target類型的unit為真正的unit的軟連接。系統需要運行的unit由軟連接文件存放在/etc/systemd/system文件夾下。代表運行狀態的target可以相互包含,如5模式的target,包含3模式的target與一些其他unit,或者說5模式依賴3模式,啟動5模式需要先啟動3模式。systemd的思想是層層包含的關系,5依賴3 ,如果3模式下的服務沒有啟動,在5模式下同樣不會啟動。
級別對應關系:
1 runlevel0.target , poweroff.target
[[email protected]~]#ll `locate runlevel0.target`
lrwxrwxrwx. 1 root root 15 3月 22 21:57 /usr/lib/systemd/system/runlevel0.target -> poweroff.target
2 runlevel1.target ,rescue.target
3 runlevel2.target , multl-user.target
4 runlevel3.target , multl-user.target
5 runlevel4.target , multl-user.target
6 runlevel5.target , graphical.target
7 runlevel6.target , reboot.target
使用systemctl命令切換級別:
systemctl isolate name.target
註:只有/lib/systemd/system/*.target文件中AllowIsolate=yes 才能切換
使用systemctl 命令查看級別:
systemctl list-units –t target
--all 查看所有的 target
使用systemctl 對默認的運行級別進行設定
systemctl get-default 獲取當前的運行級別
systemctl set-default name.target 設置當前的運行級別
切換至緊急救援模式
systemctl rescue 加載驅動
systemctl emergency 不會加載驅動
其他命令:
關機: systemctl halt, systemctl poweroff
重啟: systemctl reboot
掛起: systemctl suspend
快照\休眠: systemctl hibernate
休眠並掛起:systemctl hybrid-sleep
本文出自 “linux運維” 博客,請務必保留此出處http://arm2012.blog.51cto.com/2418467/1963238
systemd配置文件及管理方法詳解