Systemd 中的Unit 文件

一、Systemd支持的Unit文件类型

.automount 自动挂载文件系统

.device 主要用于定义设备之间的依赖,对应/dev目录下的设备

.mount 替代/etc/fstab文件

.path 用于监控指定目录的变化,并触发其他unit运行

.scope Systemd管理,描述系统服务的分组信息

.service 守护进程的相关操作

.slice 描述cgroup的信息

.snapshot Systemd unit运行状态的快照

.swap 定义虚拟内存的交换分区

.target 对unit进行逻辑分组,引导其他unit运行,替代SYSV运行级别。

.timer 由Systemd中时间触发的动作,替代crontab

二、Unit文件存放目录(从下到上优先级增加)

/etc/systemd/system 系统或用户提供的配置文件(特权用户存放)

/run/systemd/system 软件运行时生成的配置文件(非特权用户存放)

/use/lib/systemd/system 系统或第三方软件配置文件(系统更新将被覆盖)

三、Service文件字段说明

[ Unit ]

1、Description

描述文字

2、Documentation

文档,可以是一个或多个文档的URL路径

3、Requires

依赖列表,在当前服务启动时同时启动,如何有失败,则当前服务将被终止。

4、Wants

依赖列表,不考虑是否启动成功。

5、After

依赖列表,列表中所有模块启动完成,才会启动当前服务。

6、Before

启动当前服务后,才启动列表中的模块。

7、BindsTo

强关联依赖列表,在运行过程中,如果列表服务意外结束或重启,当前服务也会跟着终止或重启。

8、PartOf

BindsTo的子集,只有当PartOf列出的模块失败或重启时,当前服务才终止或重启。

9、OnFailure

当前服务启动失败时,则启动列表中模块。

10、Conflicts

定义冲突模块,如果列表中模块已经在运行,则不启动当前服务。

[ Install ]

说明:此段中的配置需要通过systemctl enable命令来激活,通过systemctl disable命令禁用。

1、WantedBy

与Wants作用相似,只是列出的不是服务所依赖的模块,而是依赖当前服务的模块。

2、RequiredBy

依赖当前服务的模块。

3、Also

当前服务被enable/disable时,将自动enable/disable列表中的模块

[ Service ]

服务生命周期控制

1、Type

服务的类型,simple(默认)、forking。如果服务程序启动后会通过fork系统调用创建子进程,然后关闭程序本身进程,则应该将Type设置为forking,否则Systemd将不会跟踪子进程的行为,而认为服务已经退出。

2、RemainAfterExit

true/false 默认为false。当值为true时,Systemd只负责启动服务进程,之后即便退出仍会认为服务在运行。主要提供给一些非常驻内存,而是启动后立即退出,然后等待消息按需启动的特殊类型。

3、ExecStart

指定服务启动的主要命令,仅一个。

4、ExecStartPre

指定在启动ExecStart命令前的准备工作,可以有多个。

5、ExecStartPost

指定在启动ExecStart命令后的收尾工作,可以有多个。

6、TimeoutStartSec

启动服务的等待秒数,超时则Systemd认为服务启动失败,设置为0关闭超时检测。

7、ExecStop

停止服务所需要执行的主要命令。

8、ExecPost

指定在ExecStop命令执行后的收尾工作,可以有多个。

9、TimeoutStopSec

停止服务的等待时间,超时则认为没有成功停止,Systemd会使用SIGKILL信号强行杀死服务进程。

10、Restart

指定在什么情况下需要重启服务进程。常用值:no(默认)、no-success、on-failure、on-abnormal、on-abort、always。

服务退出原因

no

always

on-failure

on-abnormal

on-abort

no-success

正常退出

 

     

异常退出

 

     

启动/停止超时

 

   

被异常KILL

 

11、RestartSec

如果服务需要被重启,该值为服务被重启前的等待秒数。

12、ExecReload

重新加载服务所需要执行的主要命令。

13、Environment

为服务添加环境变量。

14、Nice

服务的进程优先级,值越小优先级越高,默认为0,-20~19(不建议低于-5(内核中断优先级))。

15、WorkingDirectory

指定服务的工作目录。

16、RootDirectory

指定服务进程的根目录,如果配置了此参数,服务将无法访问指定目录以外的任何文件。

17、User

指定运行服务的用户。

18、Group

指定运行服务的用户组。

19、LimitCPU/LimitSTACK/LimitNOFILE/LimitNPROC

限制服务可用的系统资源。

20、PIDFile

指定PID文件目录。

修改完成记得使用:

sudo systemctl daemon-reload 重载Unit文件


猜你喜欢

转载自blog.csdn.net/fanper/article/details/80758086