配置文件的构成
systemd
配置文件由三个部分组成:[Unit]
、[Service]
和 [Install]
。
[Unit]
1 | [Unit] |
Description
:服务的简短描述。Documentation
:服务文档的说明。After
:指定在那个服务之后启动。
[Service]
1 | [Service] |
Type
:服务的启动方式。simple
(默认);服务以一个主进程启动,systemd 会一直等待这个进程运行直到服务停止。forking
:该服务启动后会派生出一个子进程,systemd 会等待父级进程会退出,子进程将成为主进程。oneshot
:表示服务会在启动后完成一次性的任务,任务完成后就立即退出。
…
PIDFile
:服务的 pid。ExecStart
:启动服务时要执行的命令或程序。这通常是启动服务的主要命令或程序。ExecStartPre
;服务启动之前需要执行的命令。ExecStartPost
:服务启动之后需要执行的命令。ExecReload
:重启服务时执行的命令。ExecStop
;停止服务时执行的命令。Restart
:服务在发生意外退出时的重启策略。no
(默认):服务不会自动重启。always
:除非通过systemctl stop
命令停止服务,否则在任何情况下都会不断的重启服务。on-success
:仅在服务进程成功退出时重启。on-failure
:仅在服务进程异常退出时重启。on-abnormal
:仅在服务进程异常退出、超时、或者其它非正常情况下重启。on-abort
:仅在服务进程由于未捕获的信号而退出时重启。on-watchdog
:仅在服务进程未发送“看门狗”心跳时重启。
TimeoutStartSec
:服务启动超时时间,如果服务在 设定的时间内没有完全启动成功,systemd 将会杀死服务。
[Install]
1 | [Install] |
WantedBy
:用于定义启动单元的目标的(开机自启的)。太抽象了(´・ω・`)?
如:我们有个 test.service 的服务。
1 | [Unit] |
当运行 systemctl enable test
(开机自启的时候)命令时,systemd 会在/etc/systemd/system/multi-user.target.wants/
目录下创建一个到 test.service
的符号链接(软链)。这样,当系统下次启动并达到多用户目标状态时,就会(开机)启动 test 服务。
1 | [root@localhost ~]# systemctl enable test.service |
如果没有写WantedBy
的值,开机自启动或禁止开机自启动的操作将无任何效果。
重载配置文件
要重新加载配置文件和重启了该服务,才会生效。
1 | # 重新加载配置文件 |
参考:
systemd 服务配置文件编写 by: 骏马金龙
systemd 入门教程:实战篇 by: 阮一峰