1. 程式人生 > >systemd配置文件及管理方法詳解

systemd配置文件及管理方法詳解

systemd

一、systemd文件夾配置文件夾:

systemd 配置文件存在於以下三個文件夾中:

①/etc/systemd/system 存放系統啟動的默認級別及啟動的unit的軟連接,優先級最高。

/run/systemd/system,系統執行過程中產生的服務腳本,優先級次之。

/usr/lib/systemd/system 存放系統上所有的啟動文件。優先級最低

------------------------------------------------------------------------------------------

unit分類

unit的定義文件可以根據其後綴名稱識別其定義的類型,可以使用

systemctl -t help 查看。

.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

啟動失敗。該unit不啟動。

Wants:依賴到的其他unit,弱依賴,即依賴的unit 啟動失敗。該unit繼續啟動

Conflicts:定義沖突關系

[Unit 類型]

[Service]

Type:啟動時關系的定義,

simpleexec啟動的進程就是主進程。

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命令的服務管理的使用:

管理服務通過的serviceunit文件實現的。管理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 322 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配置文件及管理方法詳解