示例
[ Unit]
Description= test
After= network.target
Before= xxx.service
[ Service]
Type= forking
PIDFile= /usr/local/test/test.pid
ExecStart= /usr/local/test/bin/startup.sh
ExecReload= xxx
ExecStop= xxx
PrivateTmp= true
[ Install]
WantedBy= multi-user.target
[Unit]区块字段描述
Description:简短描述
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]区块字段描述
Type:定义启动时的进程行为。它有以下几种值。
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 会自动重启当前服务
no( 默认值) :
on-success:
on-failure:
on-abnormal:
on-abort:
on-watchdog:
always:
KillMode的类型:
control-group( 默认) :
process:
mixed:
none:
TimeoutSec:定义 Systemd 停止当前服务之前等待的秒数
Environment:指定环境变量
[Install]字段描述
WantedBy:它的值是一个或多个 Target,当前 Unit 激活时(enable)符号链接会放入/etc/systemd/system目录下面以 Target 名 + .wants后缀构成的子目录中
multi-user.target:
graphical.target:
RequiredBy:它的值是一个或多个 Target,当前 Unit 激活时,符号链接会放入/etc/systemd/system目录下面以 Target 名 + .required后缀构成的子目录中
Alias:当前 Unit 可用于启动的别名
Also:当前 Unit 激活(enable)时,会被同时激活的其他 Unit