systemd service 配置文件有如下section: *unit
- Service
- Install
Unit [Unit] 区块通常时配置文件的第一个区块,用来定义Unit的元数据,以及配置与其他Unit的关系。它的主要字段如下:
- Descriptin:简短描述
- Documentation: 文档地址
- Requires: 当前Unit依赖的其他Unit, 如果它们没有运行,当前Unit会启动失败
- Wants: 与当前Unit配合的其他Unit, 如果它们没有运行,当前Unit不会启动失败
- BindsTo: 与Requires类似,它指定的unit如果退出,会导致当前Unit停止
- Before: 如果该字段指定的Unit也要启动,那么必须在当前Unit之后启动
- After: 如果该字段指定的Unit也要启动,那么必须在当前Unit之前启动
- Conflicts: 这里指定的Unit不能与当前的Unit同时运行
- Condition: 当前Unit运行必须满足的条件,否则不会运行
- Assert: 当前Unit运行必须满足的条件,否则会报启动失败
Service [Service] 区块用来Service的配置,只有Service类型的Unit才有这个区块。 它的主要的字段如下:
-
Type=simple: 默认值,执行ExecStart指定的命令,启动主进程
-
Type=forking: 以fork方式从父进程创建子进程,创建后父进程会立即退出
-
Type=oneshot: 一次性进程, Systemd 会等当前服务退出,再继续往下执行
-
Type=dbus: 当前服务通过D-Bus启动
-
Type=notify: 当前服务器启动完毕, 会通知Systemd, 在继续往下执行
-
Type=idle, 若有其他任务执行完毕,当前服务才会运行
-
ExecStart: 启动当前服务的命令
-
ExecStartPre: 启动当前服务之前执行的命令
-
ExecStartPost: 启动当期服务之后执行的命令
-
ExecReload: 重启当前服务时执行的命令
-
ExecStop: 停止当前服务时执行的命令
-
ExecStopPost: 停止当前服务之后执行的命令
-
RestartSec: 自动重启当前服务间隔的秒数
-
Restart: 定义何种情况Systemd会自动重启当前服务,可能的值会包括always(总是重启), on-success, on-failure, on-abnormal, on-abort, on-watching
-
TimeoutSec: 定义Systemd 停止当前服务之前等待的秒数
-
Enviroment: 指定环境变量
Install [Install] 通常是配置文件的最后一个区块,用来定义如何启动,以及是否开机启动。 它的主要字段如下:
- WantedBy: 它的值是一个或多个Target,当前Unit激活时(enable)符号链接会放入/etc/systemd/system目录下面以Target名+.wants后缀构成的子目录中。
- RequiredBy: 它的值是一个或多个Target, 当前Unit激活时,符号链接会放入/etc/systemed/system目录下面以Target名+.required后缀构成的子目录中。
- Alias: 当前Unit可用于启动的别名。
- Also: 当前Unit激活(enable)时,会被同时激活的其他Unit.