配置文件的构成
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: 阮一峰