Linux的服务单元与目标

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

猜你喜欢

转载自blog.csdn.net/qq_25744595/article/details/84949417