1. 编写和调试自定义脚本

通常,systemd 脚本被编写为 shell 脚本。
首先使用常规约定编写自定义脚本。
我们将我们的脚本称为 my-custom-script.sh 并且很简单:

#!/bin/sh
echo I am a custom script
on  it road.com

3. 向 systemd 描述自定义脚本

手动编写和测试脚本后,脚本已准备好向 systemd 系统进行描述。
为此,需要一个 [name].service 文件。
语法使用通常用于配置文件的 INI 格式。
继续我们的示例,我们需要一个 my-custom-script.service 文件。
每次服务启动时,可执行文件将只运行一次。
直到网络层启动并稳定后才会启动服务:

my-custom-script.sh 文件

# This is my-custom-script.service, which describes the 
[Unit]
Description=This is executed on shutdown or reboot
DefaultDependencies=no
Wants=network-pre.target                                                                   # 如果在运行脚本之前需要网络
Before=network-pre.target shutdown.target reboot.target halt.target                        # 定义停止单元的顺序。(必选)
[Service]
Type=oneshot                                                                               # 允许指定随后按顺序执行的多个自定义命令。(必选)
RemainAfterExit=true                                                                       # oneshot设置所需(必需)
Environment=ONE='one' "TWO='2"                                                             # 您可以设置一些环境变量,这些变量可能是作为参数传递所必需的
ExecStart=/bin/true                                                                        # 因为是关闭脚本,所以启动此服务时不会执行任何操作
ExecStop=/bin/bash /usr/local/bin/my-custom-script.sh ${ONE} ${TWO}                        # 更改为脚本完整路径(必需)
TimeoutStopSec=1min 35s                                                                    # 配置停止等待的时间。
[Install]
WantedBy=multi-user.target                                                                 # 启用此单元后,WantedBy 中列出的单元将获得对单元的 Want 依赖关系。 (必需的)

5. 启用脚本以备将来重启

与早期版本的 chkconfig 类似,必须启用该服务。
由于添加了新服务,请通知 systemd 守护进程重新配置自身:

# systemctl enable my-custom-script.service
# systemctl daemon-reload

2. 脚本必须是可执行的

让脚本可执行:

# chmod 0755 my-custom-script.sh

4. 将服务文件放入预期服务集合目录

让我们将自定义脚本放在服务集合目录中,例如:/etc/systemd/system/:

# cp my-custom-script.sh /etc/systemd/system/
如何在 CentOS/RHEL 7 中向 systemd 添加自定义脚本

systemd 工具替换了早期版本中较旧的 System-V 初始化脚本。
systemd 是一个事件驱动的工具,它允许并行启动、控制或者停止非依赖子系统。
在这里,我们解释了如何向 systemd 工具添加自定义脚本。

日期:2020-09-17 00:13:06 来源:oir作者:oir