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中列出的单元将获得对该单元的想要依赖性。(必需)
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