您的位置:首页 > 其它

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

2020-07-12 16:15 169 查看

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

[code][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 

[code]#!/bin/bash

date > /root/disk_space_report.txt
du -sh /home/ >> /root/disk_space_report.txt

在写完上的脚本后,千万要记得修改这个文件的属性以使得它可以直接运行:

[code]chmod a+x /usr/local/bin/disk-space-check.sh

记得我们是在root用户下修改这个文件。否则运行上面的指令需要加上sudo。

 

为脚本及 Systemd 服务单元配置相应的权限

[code]chmod 744 /usr/local/bin/disk-space-check.sh
chmod 664 /etc/systemd/system/disk-space-check.service

我们是在root用户下执行上面的指令,否则需要加上sudo。

启动服务单元

[code]sudo systemctl daemon-reload
sudo systemctl enable disk-space-check.service

运行服务

[code]sudo systemctl start disk-space-check.service
sudo systemctl status disk-space-check.service

测试

我们重新启动Ubunut 系统,在启动完后,我们查看 root 用户下的文件:

[code]sudo ls /root/
disk_space_report.txt
[code]# cat disk_space_report.txt
2020年 05月 21日 星期四 11:08:17 CST
20G	/home/

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: