如何在 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
[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/
- 如何避免Docker容器启动脚本运行后自动退出——一个cron定时任务docker镜像方案
- 如何确保 Shell 脚本只有一个实例运行
- ubuntu增加启动运行脚本
- Ubuntu中如何双击后运行shell脚本
- centos/ubuntujenkins.war自启动脚本,Linux启动停止jar包的运行案例
- 如何在终端使用后台运行模式启动一个Linux应用程序
- 如何编写一个shell脚本查看某个进程是否在运行
- 如何在终端使用后台运行模式启动一个Linux应用程序
- 如何写一个shell脚本并运行
- 如何在终端使用后台运行模式启动一个Linux应用程序
- ubuntu 锐捷认证 rjsupplicant.sh 无法运行启动脚本
- Ubuntu下自动启动终端并运行脚本或命令
- 关于Ubuntu运行级别、开机启动脚本的说明
- 让一个脚本自动定时运行,设置、启动 linux定时脚本 (crontab详解)
- ubuntu 修改ssh远程主机名称,mac开机运行命令,静默方式启动virtual box虚拟机,静默执行run脚本
- 如何在tomcat启动的时候运行一个Java类
- 如何用shell写一个rsync网络服务启动脚本?超级详细!
- 如何使Shell脚本只有一个实例在运行
- 如何在windows上运行一个javascript脚本
- Ubuntu下自动启动终端并运行脚本或命令