Unit类型
| 说明 |
---|
service | 系统上的一项服务,包括启动、重新启动和停止服务 |
socket | 与服务关联的网络套接字 |
device | 使用 systemd 专门管理的设备 |
mount | 由 systemd 管理的挂载点 |
automount | 启动时自动挂载的挂载点 |
swap | 交换系统上的空间 |
target | 其它 unit 的同步点,通常用于在启动时启动启用的服务 |
path | 基于路径激活的路径。例如,您可以根据某条路径的状态(例如是否存在)来启动服务 |
timer | 用于安排激活另一个单元的计时器。 |
snapshot | 当前 systemd状态的快照。通常用于在对 systemd 进行临时更改后回滚 |
slice | 通过 Linux 控制组节点 (cgroups) 限制资源 |
scope | 来自 systemd 总线接口的信息。通常用于管理外部系统进程 |
以.service文件说明
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
| 说明 |
---|
Type=simple | 默认值,ExecStart字段启动的进程为主进程,服务进程不会 fork,如果该服务要启动其他服务,不要使用此类型启动。 |
Type=forking | ExecStart字段将以fork()方式从父进程创建子进程启动,创建后父进程会立即退出,子进程成为主进程。通常需要指定PIDFile字段,以便 Systemd 能够跟踪服务的主进程对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可 |
Type=oneshot | 只执行一次,Systemd 会等当前服务退出,再继续往下执行。适用于只执行一项任务、随后立即退出的服务。通常需要指定RemainAfterExit=yes字段,使得 Systemd 在服务进程退出之后仍然认为服务处于激活状态 |
Type=dbus | 当前服务通过 D-Bus 信号启动。当指定的 BusName 出现在 DBus 系统总线上时,Systemd认为服务就绪 |
Type=notify | 当前服务启动完毕会发出通知信号,通知 Systemd,然后 Systemd 再启动其他服务 |
Type=idle | Systemd 会等到其他任务都执行完,才会启动该服务。 |
RemainAfterExit | 当前服务的所有进程都退出的时候,Systemd 仍认为该服务是激活状态。这个配置主要是提供给一些并非常驻内存,而是启动注册后立即退出,然后等待消息按需启动的特殊类型服务使用的 |
ExecStart | 启动当前服务的命令 |
ExecStartPre | 启动当前服务之前执行的命令 |
ExecStartPost | 启动当前服务之后执行的命令。 |
TimeoutStartSec | 定义 Systemd 停止当前服务之前等待的秒数。 |
ExecStop | 停止当前服务时执行的命令 |
ExecStopPost | 停止当前服务之后执行的命令 |
KillMode | 定义 Systemd 如何停止服务,可能的值包括: |
control-group(默认值) | 当前控制组里面的所有子进程,都会被杀掉 |
process | 只杀主进程(sshd 服务,推荐值) |
mixed | 主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号 |
none | 没有进程会被杀掉,只是执行服务的 stop 命令。 |
TimeoutStopSec | 停止服务时的等待的秒数,如果超过这个时间服务仍然没有停止,systemd 会使用 SIGKILL 信号强行杀死服务的进程。 |
Restart | no(默认值):退出后不会重启 |
Restart | on-success:只有正常退出时(退出状态码为0),才会重启 |
Restart | on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启(守护进程,推荐值) |
Restart | on-abnormal:只有被信号终止和超时,才会重启(对于允许发生错误退出的服务,推荐值) |
Restart | on-abort:只有在收到没有捕捉到的信号终止时,才会重启 |
Restart | on-watchdog:超时退出,才会重启 |
Restart | always:不管是什么退出原因,总是重启 |
PIDFile | 指向当前服务 PID file 的绝对路径。 |
RestartSec | Systemd 重启当前服务间隔的秒数 |
ExecReload | 重启当前服务时执行的命令 |
Environment | 为服务添加环境变量,如前面的第一个例子中所示。 |
EnvironmentFile | 指定加载一个包含服务所需的环境变量列表的文件,文件中的每一行都是一个环境变量的定义。 |
Nice | 服务的进程优先级,值越小优先级越高,默认为0。-20为最高优先级,19为最低优先级。 |
WorkingDirectory | 指定服务的工作目录。 |
RootDirectory | 指定服务进程的根目录( / 目录),如果配置了这个参数后,服务将无法访问指定目录以外的任何文件。 |
User | 指定运行服务的用户 |
Group | 指定运行服务的用户组 |
EnvironmentFile | 指定当前服务的环境参数文件。该文件内部的key=value键值对,可以用$key的形式,在当前配置文件中获取LimitCPU / LimitSTACK / LimitNOFILE / LimitNPROC 等限制特定服务可用的系统资源量,例如 CPU,程序堆栈,文件句柄数量,子进程数量 |
Install
| 说明 |
---|
WantedBy | 和[Unit]中的 Wants 作用相似,列出的是依赖当前服务的模块。它的值是一个或多个 target,执行enable命令时,符号链接会放入/etc/systemd/system目录下以 target 名 + .wants后缀构成的子目录中。最常见的用法:WantedBy=multi-user.target,表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。 |
RequiredBy | 和[Unit]的 Requires 作用相似,依赖当前服务的模块。它的值是一个或多个 target,执行enable命令时,符号链接会放入/etc/systemd/system目录下以 target 名 + .required后缀构成的子目录中 |
Alias | 当前 Unit 可用于启动的别名 |
Also | 当这个服务被 enable/disable 时,将自动 enable/disable 后面列出的每个模块。 |
原文链接:https://blog.csdn.net/wangzhicheng987/article/details/122315952