文章目录

  • 说明
      • [Unit]部分详解
      • [Service]部分详解
      • [Install]部分详解
    • 启动服务

说明

sshd 服务的 unit 配置文件如下所示,主要分为三部分:[Unit]、[Service] 和 [Install]

/root/systemd/system/myserver@.service

[root@vm03 ~]# cat /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s[Install]
WantedBy=multi-user.target

[Unit]部分详解

此部分中使用的参数不仅限于 service 类型的 unit,对其它类型 unit 也是通用的,有关这些参数及其说明的完整列表,可运行命令 man systemd.unit 或访问 systemd.unit 中文手册

注意:在 [unit] 块中的每个参数后都可以指定一个以空格分隔的列表

Description:当前 unit 的描述
Documentation:文档地址,仅接受类型为:http://、https://、file:、info:、man: 的URI
Requires:表示本 unit 与其它 unit 之间存在强依赖关系,如果本 unit 被激活,此处列出的 unit 也会被激活,如果其中一个依赖的 unit 无法激活,systemd 都不会启动本 unit
Wants:与 Requires 类似,区别在于如果依赖的 unit 启动失败,不影响本 unit 的继续运行
After:表示本 unit 应该在某服务之后启动,选项可参考 systemd.special 中文手册
Before:表示本 unit 应该在某服务之前启动,After和Before 字段只涉及启动顺序,不涉及依赖关系
BindsTo:与 Requires 类似,当指定的 unit 停止时,也会导致本 unit 停止
PartOf:与 Requires 类似,当指定的 unit 停止或重启时,也会导致本 unit 停止或重启
Conflicts:如果指定的 unit 正在运行,将导致本 unit 无法运行
OnFailure:当本 unit 进入故障状态时,激活指定的 unit


[Service]部分详解

service专有参数
只有 service 类型的 unit 才有这些参数,参数完整列表请访问 systemd.service 中文手册 或 systemd.service

simple(默认值):服务为主进程启动,systemd 认为该服务将立即启动,服务进程不会 fork ,如果该服务要启动其他服务,则不要使用此类型启动,除非该服务是 socket 激活型。
forking:服务将以fork分叉的方式启动,此时父进程将会退出,子进程将成为主进程。systemd 认为当该服务进程 fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon)除非你确定此启动方式无法满足需求,否则使用此类型启动即可。使用此启动类型应同时指定 PIDFile= 以便 systemd 能够跟踪服务的主进程
oneshot:类似于simple,但只执行一次,Systemd会等它执行完,才启动其它服务。这一选项适用于只执行一项任务,随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态
dbus:类似于simple,但会等待D-Bus信号后启动。当指定的 BusName 出现在DBus系统总线上时,systemd 认为服务就绪。
notify:类似于simple,启动完毕后会通知 Systemd ,然后继续往下执行
idle:类似于simple,但是要等到其它所有任务都执行完,才会启动该服务
RemainAfterExit:一个布尔值,它指定即使服务的所有进程都已退出,也应将服务视为活动的,默认为 no

GuessMainPID:一个布尔值,指定systemd在无法可靠确定服务的主 PID 时是否应该猜测它。除非设置了 Type=forking 并且未设置 PIDFile,否则此选项将被忽略,默认为 yes

PIDFile:指向此守护进程的 PID 文件的绝对文件名。对于 Type=forking 的服务,建议使用此选项。Systemd 在服务启动后读取守护进程的主进程的 PID。Systemd 不会写入此处配置的文件,但它会在服务关闭后删除该文件

BusName:到达此服务的 D-Bus 总线名称。对于 Type=dbus 的服务,此选项是必需的

ExecStart:服务启动时执行的命令和参数

ExecStartPre: 服务启动之前执行的命令

ExecStartPost: 服务启动之后执行的命令

ExecReload:重启服务时执行的命令

ExecStop:服务停止时执行的命令和参数

ExecStopPost:服务停止之后执行的命令

RestartSec:重新启动服务前的睡眠时间(以秒为单位)

TimeoutStartSec:等待服务启动的时间(以秒为单位)

TimeoutStopSec:等待服务停止的时间(以秒为单位)

TimeoutSec:同时配置TimeoutStartSec和TimeOutshopSec的缩写

Restart:配置当服务的进程退出、被杀死或达到超时时是否重新启动服务,可以设置的值如下:

no 服务将不会重新启动,这是默认设置
on-success 仅当服务进程完全退出时重新启动(退出代码0)
on-failure 仅在服务进程异常退出时重启,所谓“异常退出”是指:退出码不为"0"
on-abnormal 如果进程因信号或超时而终止时重新启动
on-watchdog 当看门狗超时而重新启动
on-abort 如果进程由于未指定为干净退出状态的未捕获信号而退出,则重新启动
always 总是重新启动
Environment:指定环境变量

KillMode:定义systemd如何停止服务,可以设置的值如下:

control-group(默认值):当前控制组里面的所有子进程,都会被杀掉
process:只杀主进程
mixed:主进程将收到SIGTERM信号,子进程收到SIGKILL信号
none:没有进程会被杀掉,只是执行服务的stop命令


[Install]部分详解

[install] 定义了 unit 的安装信息,此部分配置仅在 systemctl enable 或 systemctl disable 时使用,在 unit 运行时不解释此部分,相当于是配置如何开机启动

此部分中使用的参数不仅限于service类型的unit,对其它类型的 unit也是通用的,有关这些参数及其说明的完整列表,可运行命令 man systemd.unit 或访问 systemd.unit 中文手册

Alias:当前 unit 可用于启动的别名,此处列出的名称必须与服务文件名具有相同的后缀(即类型),在执行 systemctl enable 时将创建从这些名称到 unit 文件名的符号链接
RequiredBy:表示该服务所在的Target,它的值是一个或多个Target,当 systemctl enable 时 unit 符号链接会放入 /etc/systemd/system 目录下面以 Target名 + .required 后缀构成的子目录中
WantedBy:表示该服务所在的Target,它的值是一个或多个Target,当前 systemctl enable 时 unit符号链接会放入 /etc/systemd/system 目录下面以 Target名 + .wants 后缀构成的子目录中
Also:当 systemctl enable 或 systemctl disable 时会同时 enable 和 disable 的其它 unit 列表

启动服务

systemctl status (服务名)

systemctl restart (服务名)

编写 systemctl 入门相关推荐

  1. 用python写脚本看什么书-终于知晓python编写脚本入门教程

    PyQt5是基于Digia公司强大的图形程式框架Qt5的python接口,由一组python模块构成.PyQt5本身拥有超过620个类和6000函数及方法.在可以运行于多个平台.PyQt5拥有双重协议 ...

  2. 通达信大智慧同花顺益盟操盘手股票指标公式编写从入门到精通-七天学会指标编写

    通达信大智慧同花顺益盟操盘手股票指标公式编写从入门到精通-七天学会指标编写

  3. Xposed框架编写模块入门

    Xposed框架编写模块入门 最近接触了xposed框架,一个很好用的hook神器,试着自己编写模块,发现好多坑,这里记录一下.其实网上有好多例子,我这里也是参考了一个博客的例子,但是都会出现各种各样 ...

  4. 编写Eureka入门案例

    我们讲解了Eureka注册中心的三种角色,那么我们就来讲解Eureka的入门案例,那么这里我们先去编写一个EurekaServer,他作为一个能够提供服务注册和发现的平台,我们先要有Eureka Se ...

  5. 新手小白用记事本编写Java入门程序需要注意的常见问题

    Java入门程序-常见问题 1.文件扩展名是否打开 对新手小白来说,文件扩展名是经常容易忘记的.在我们用记事本编写一个好入门程序,然后保存的时侯,需要修改文件的格式为.java,但是如果没有打开文件的 ...

  6. Linux加减程序编写,Makefile 入门(加减乘除实现)

    Makefile 入门(加减乘除实现) 准备 使用任意Linux发行版即可,本文使用WSL Ubuntu. 开始之前,需要安装必要的工具: sudo apt install make g++ 开始 1 ...

  7. linux驱动编写(入门)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 在我离职之前,工作内容几乎不涉及到驱动方面的知识.我所要做的内容就是把客户对设备的请求拆分成一 ...

  8. Linux shell:脚本编写快速入门

    文章目录 1.Sha-Bang 2."变量" 2.1 变量 2.2 运算 2.3 字符串 2.4 数组 3.流程控制 3.1 if 判断 3.2 case 分支 3.3 for 循 ...

  9. Tampermonkey(油猴)脚本编写快速入门

    目录 油猴脚本概述 脚本注释/注解 脚本权限 grant 添加新脚本 自定义网页倒计时 网页浏览离开黑屏保护 微博视频下载助手 华为云工作项列表突出展示工作项 Greasy Fork 发布脚本 油猴脚 ...

最新文章

  1. mysql主从复制搭建
  2. linux phpstorm安装和激活方法
  3. [原创分享] SocketCapture 网络抓包工具
  4. Java小结(五)——进制转换
  5. stm32f302 can通讯_福特福克斯发动机无法启动,诊断电脑还通讯不了怎么修?
  6. Zoom并非端到端加密、TikTok第一季度下载量全球第一等|Decode the Week
  7. 获取场景中指定类的实例
  8. WSARecv() 函数使用解析
  9. flash源文件_Animate/FLASH如何将多个源文件合并
  10. java中 15db9742_请问我这个报错[I@15db9742是怎么回事啊?
  11. $.ajax()方法
  12. shell学习之循环命令
  13. 虚拟的virtualbox中的ubuntu和外部的xp的共享
  14. 开源软件漏洞安全风险分析
  15. 修改app应用的图标与名字
  16. Windows操作系统----事件日志----事件查看器
  17. 开源项目ruoyi-springboot-vue源码分析之LogAspect日志打印
  18. YAPI简单使用教程
  19. 数据库 连接(自然连接,内连接,外连接)
  20. tbr tbn tbc 的意思

热门文章

  1. Pointer being freed was not allocated
  2. PERCENT_RANK
  3. 将图和双向transformers融合的分子性质预测新工具 简称AGBT - 论文阅读
  4. python基础之数据类型III
  5. SpringBoot报错o.s.b.d.LoggingFailureAnalysisReporter
  6. 编程语言中的鸭子类型 Duck Typing
  7. Contest3303 - 2022跟随唐克练编程之《顺序结构》(upc)c++
  8. 20150906全志a33上调通rtl8188eus的过程(sina33)
  9. 一个北大学子毕业后的感悟[转]
  10. C语言 输入三个字符串,由小到大输出