下面的配置将讨论如何在systemd Linux引导期间执行shell脚本的基本示例。在Linux启动期间执行shell脚本可能有各种原因,例如启动特定的定制服务、检查磁盘空间、创建备份等。
下面的示例将作为一个基本模板,稍后将根据您的具体需要进行修改。
在下面的示例中,我们将在引导期间检查/home/
目录的磁盘空间,并将报告写入/root/
目录。
启动shell脚本
接下来,我们创建要在SystemD启动期间执行的自定义shell脚本。
位置和脚本的名称已经被 service unit 定义为 /usr/local/bin/disk-space-check.sh
。
脚本的内容可以简单:
#!/bin/bash date > /root/disk_space_report.txt du -sh /home/>> /root/disk_space_report.txt
Systemd服务单元
首先,我们需要创建一个systemd启动脚本,例如disk-space-check.service
,并将其放入“/etc/systemd/system/”目录中。您可以在下面找到此类systemd启动脚本的示例:
[Unit] After=mysql.service [Service] ExecStart=/usr/local/bin/disk-space-check.sh [Install] WantedBy=default.target
- After:在应运行脚本时指示systemd。在我们的情况下,脚本将在MySQL数据库启动后运行。其他示例可能是“Network.Target”等。
- ExecStart:此字段提供完整路径要执行的实际脚本
- WantedBy:进入哪些启动目标系统应该安装系统
上面是systemd service unit最低配置。
有关要使用的更多信息和选项,请参阅systemd.service
手册页面:
$man systemd.service
配置和安装
在我们重新启动我们的系统之前,我们需要让我们的脚本可执行文件:
# chmod 744 /usr/local/bin/disk-space-check.sh
接下来,安装SystemD服务单元并启用它,以便它将在系统启动时执行:
# chmod 664 /etc/systemd/system/disk-space-check.service # systemctl daemon-reload # systemctl enable disk-space-check.service Created symlink from /etc/systemd/system/default.target.wants/disk-space-check.service to /etc/systemd/system/disk-space-check.service.
如果我们希望在重新启动运行之前测试脚本:
# systemctl start disk-space-check.service # cat /root/disk_space_report.txt Thursday 7 July 11:30:25 AEST 2014 1.5G /home/
日期:2020-07-07 20:54:35 来源:oir作者:oir