如何在 Ubuntu 启动时运行一个脚本

在很多时候,我们搭建一个服务器的时候,希望在里面运行一些服务。这些服务需要在机器启动的时候就运行起来,直至机器关机。在今天的文章中,我来介绍如何使用 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/

 

展开阅读全文

没有更多推荐了,返回首页

应支付0元
点击重新获取
扫码支付

支付成功即可阅读