在很多时候,我们搭建一个服务器的时候,希望在里面运行一些服务。这些服务需要在机器启动的时候就运行起来,直至机器关机。在今天的文章中,我来介绍如何使用 Linux 系统提供的Systemd服务单元来创建一个可以在机器启动时就运行一个脚本。这个练习在Ubuntu 18.04及Ubuntu 20.04上可以运行。你将学些到:
- 如何创建Systemd服务单元
- 如何创建一个简单的磁盘空间检查脚本
- 如何设置对Systemd服务单元文件的权限
- 如何设置脚本权限
- 如何使Systemd服务单元在系统启动时运行
Ubuntu 20.04/18.04基于Systemd,因此在启动时运行脚本的最简单且建议的方法是创建Systemd服务文件,并在系统启动期间通过此服务执行任何脚本,如bash,python等。
以下步骤将显示一个运行bash脚本的示例,该脚本报告/home目录的磁盘空间使用情况,并在每次Ubuntu系统启动时将该报告保存在/root目录中。
创建一个 Systemd 服务文件
首先,我们需要使用root进行登录,并在位置/etc/systemd/system/创建一个叫做disk-space-check.service的文件:
/etc/systemd/system/disk-space-check.service
[Unit]
After=network.service
[Service]
ExecStart=/usr/local/bin/disk-space-check.sh
[Install]
WantedBy=default.target
在这里:
After:指示systemd关于何时应运行脚本。 在我们的例子中,脚本将在网络连接后运行。 其他示例可以是mysql.target等。
ExecStart: 此字段提供启动时要执行的实际脚本的完整路径。
WantedBy:将systemd单元安装到哪个引导目标中
如果我们想得到更多关于 Systemd 服务的帮助信息,你可以输入命令: man systemd.unit
创建一个可以被执行的脚本
在这一步我们创建一个可以在 Ubuntu 启动时就可以运行的脚本。我们在如下的路径创建一个脚本:
/usr/local/bin/disk-space-check.sh
#!/bin/bash
date > /root/disk_space_report.txt
du -sh /home/ >> /root/disk_space_report.txt
在写完上的脚本后,千万要记得修改这个文件的属性以使得它可以直接运行:
chmod a+x /usr/local/bin/disk-space-check.sh
记得我们是在root用户下修改这个文件。否则运行上面的指令需要加上sudo。
为脚本及 Systemd 服务单元配置相应的权限
chmod 744 /usr/local/bin/disk-space-check.sh
chmod 664 /etc/systemd/system/disk-space-check.service
我们是在root用户下执行上面的指令,否则需要加上sudo。
启动服务单元
sudo systemctl daemon-reload
sudo systemctl enable disk-space-check.service
运行服务
sudo systemctl start disk-space-check.service
sudo systemctl status disk-space-check.service
测试
我们重新启动Ubunut 系统,在启动完后,我们查看 root 用户下的文件:
sudo ls /root/
disk_space_report.txt
# cat disk_space_report.txt
2020年 05月 21日 星期四 11:08:17 CST
20G /home/
Linux启动脚本
本文介绍如何在Ubuntu系统中使用Systemd服务单元创建启动时运行的脚本,具体演示了一个检查磁盘空间并记录报告的bash脚本的创建过程。
1922

被折叠的 条评论
为什么被折叠?



