Systemd的单元类型
单元类型 | 单元后缀 | 说明 |
---|---|---|
service | .service | 描述一个服务 |
socket | .socket | 描述一个套接字 |
device | .device | 描述一个内核标识设备文件 |
mount | .mount | 描述一个文件系统挂载点 |
automount | .automount | 描述一个文件系统自动挂载点 |
swap | .swap | 描述一个内存交换设备或文件 |
path | .path | 描述一个系统中的文件或目录 |
timer | .timer | 描述一个定时器 |
snapshot | .snapshot | 用于保存一个systemd的状态 |
scope | .scope | 使用systemd的总线接口以编程方式创建的外部进程 |
slice | .slice | 描述基于Cgroup的一组通过层次组织的管理系统进程 |
target | .target | 描述一组systemd的单元 |
Systemd单元配置文件的位置
目录 | 描述 | 同名配置文件的应用优先级 |
---|---|---|
/usr/lib/systemd/system/ | 由安装RPM包发布的Systemd单元 | 最低 |
/run/systemd/system/ | 在运行时创建的单元 | 高 |
/etc/systemd/system/ | 有管理员创建和管理的Systemd单元 | 最高 |
Systemd单元的依赖关系
- 需求依赖:使用Requires或Wants配置语句描述
- 顺序依赖:使用Before或After配置语句描述
- 冲突依赖:使用Conflicts配置语句描述
配置文件语法
单元配置文件包括三节内容:
- 用于描述本单元相关信息的[Unit]
- 用户描述本单元的[Install]
- 用于描述特定单元类型信息的[Service]、[Socket]、[Mount]、[Automount]、[Swap]、[Path]、[Timer]、[Slice]
Systemd单元配置文件[Unit]配置段常用指令
指令 | 说明 |
---|---|
Description | 对当前单元的描述 |
Documentation | 说明当前单元的手册和文档 |
Requires | 说明启动当前单元时,“必须(强依赖)”启动的单元 |
Requisite | Requires的强势版,需要启动的单元不成功,Systemd会报错 |
Wants | 说明启动当前单元“需要(弱依赖)”启动的单元 |
Conflicts | 当前单元不能与那些单元同时启动,启动当前单元会停止与其冲突的单元 |
Before | 说明当前单元在那些单元启动之前就启动 |
After | 说明当前单元在那些单元启动之后才启动 |
AllowIsolate | 若其值为true(默认为false),则当前单元可以用于systemctl isolate |
Systemd单元配置文件[Install]配置段常用指令
指令 | 说明 |
---|---|
Alias | 为对当前单元指定别名 |
WantedBy | 指定那个或那些单元需要启动当前单元 |
RequiredBy | 指定那个或那些单元必须要启动当前单元 |
Systemd单元配置文件[Service]配置段常用指令
指令 | 说明 |
---|---|
ExecStart | 指定启动服务时执行的命令 |
ExecStartPre | 指定启动服务之前执行的命令 |
ExecStop | 指定停止服务时执行的命令 |
ExecReload | 指定重新加载服务配置文件时执行的命令 |
KillMode | 指定服务进程杀死模式,默认值是control-group表示当前单元Cgroup维护的所有进程;process表示仅主进程 |
Restart | 指定当前服务需要重启的情况,默认no不需要重启,on-sucess(退出码为0)表示仅当当前服务进程正常退出时才会重启,on-failure(退出码不为0)表示仅当当前服务进程异常退出时才重启 |
RestartSec | 指定重启服务之前休眠的时间 |
EnvironmentFile | 指定当前服务的环境配置文件 |
Systemd的目标target
target可以看成是一批服务的集合,里面定义了那些服务需启动,那些不启动。
使用systemctl命令查看target
命令 | 说明 |
---|---|
systemctl [list-units] --type target 或 systemctl [list-units] -t target | 显示当前已激活的目标 |
systemctl [list-units] --type target -all或 systemctl [list-units] -at target | 显示当前已加载的所有目标 |
systemctl list-unit-files --type target 或 systemctl list-unit-files -t target | 显示systemd的RPM包安装的所有目标 |
systemctl [–all | -a] list-dependencies < TargetName> .target | 显示指定目标的依赖关系 |
使用systemctl管理目标的常用命令
命令 | 说明 | 举例 |
---|---|---|
systemctl get-default | 显示默认的目标 | systemctl get-default |
systemctl set-default < TargetName>.target | 设置默认目标(下次启动时生效) | systemctl set-default graphical.target |
systemctl isolate < TargetName>.target | 更改当前的目标(立即生效) | systemctl isolate multi-user.target |