systemd配置文件及管理方法详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:启动时关系的定义,
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配置文件及管理方法详解的主要内容,如果未能解决你的问题,请参考以下文章