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

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

#!/bin/sh
echo "I am a custom script" > /var/tmp/script.out
echo "The script was run at : `date`" >> > /var/tmp/script.out

脚本必须是可执行的。

# chmod 0755 /var/tmp/my-custom-script.sh
on  it road.com

2. 向 systemd 描述自定义脚本

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

在 /etc/systemd/system/my-custom-script.service 中创建一个新的服务单元文件,内容如下。
服务单元的名称是用户定义的,可以是我们选择的任何名称。

my-custom-script.sh

# 定义my-custom-script.service服务
[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 /var/tmp/my-custom-script.sh ${ONE} ${TWO}                              # 更改为脚本完整路径(必需)
TimeoutStopSec=1min 35s                                                                    # 配置等待停止的时间。
[Install]
WantedBy=multi-user.target                                                                 # 启用此单元后,WantedBy中列出的单元将获得对该单元的想要依赖性。(必需)
如何在 CentOS/RHEL 7 中向 systemd 添加自定义脚本

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

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

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

# systemctl enable my-custom-script.service
# systemctl daemon-reload
日期:2020-09-17 00:13:06 来源:oir作者:oir