前言
给出一个shell脚本的文件示例;
ubuntu20.04下编写shell脚本文件,实现检测程序的自启动功能,并且在它停止运行后自动运行。
一、Shell 与自启动是什么?
Shell 脚本是一种用于编写命令行脚本的脚本语言,常用于自动化任务、批量处理和系统管理等方面。
面对一些远程设备,需要让其开机自动启用自定义的功能,但是远程设备每次开机远程启动,或者多用户分别进行作业使用,不能自启动会导致管理不及时的问题。
二、配置步骤
1.shell脚本示例
首先确定你的路径,可以在指令行里用pwd指令打印,同时给shell脚本文件增加执行权限。在这里给出我的脚本文件路径作为参考。
jjc@jjc:~/learn$ pwd
/home/jjc/learn
使用touch test.sh生成一个名为test.py的脚本文件,然后用gedit编辑器写功能。
编辑器是可选的,可以选择vim,nano等。
touch start.sh
写好的文件如下所示:
#! /bin/bash
#声明编译器
#定义主体功能
function run_script() {
#打印Running Python script...
echo "Running Python script..."
#使用python3启动/home/jjc/learn/new_load路径下的start.py程序
python3 /home/jjc/learn/new_load/start.py
# $?捕获上一条指令的状态,成功捕获0,失败捕获非0值
if [ $? -eq 0 ]; then
#执行成功打印的提示信息
echo "Python script finished successfully."
else
#执行失败的提示信息
echo "Python script failed. Restarting..."
fi
}
#循环功能
while true; do
run_script
done
查看创建的文件是否又可执行权限,没有则需要添加。
ll start.sh
如下图所示,如果文件有x表明是可以执行的。没有则需要添加。
添加执行权限。
sudo chmod +x start.sh
使用cat start.sh查看编写的文件。
cat start.sh
使用more start.sh查看编写的文件。
more start.sh
脚本文件编写完成。
2.设置开机自启动
在Ubuntu 20.04里面实现自启动功能,首先需要创建一个单元文件进行自启动配置。
创建一个名为 start01.service
的单元文件,并将其保存到 /etc/systemd/system/
目录下:
sudo nano /etc/systemd/system/start01.service
编辑start01.service文件,在文件添加下面的内容:
[Unit]
Description=Start Script
[Service]
Environment=PYTHONPATH=/home/jjc/.local/lib/python3.8/site-packages
ExecStart=/home/jjc/learn/start01.sh
[Install]
WantedBy=default.target
Environment=PYTHONPATH=/home/jjc/.local/lib/python3.8/site-packages这一句是因为我在shell脚本内启动了python文件,需要依靠python的解释器,所以添加了python解释器的路径。
ExecStart=/home/jjc/learn/start01.sh是我的文件的路径,根据实际脚本所在位置的情况使用pwd查询位置。
保存并关闭文件,然后重新加载 systemd 配置并启用服务
#重新加载 systemd 守护程序
sudo systemctl daemon-reload
#设置开机自启动
sudo systemctl enable start01.service
重启机器生效即可。
当需要关闭开机自启动时,执行下面的指令。
#关闭开机自启动
sudo systemctl disable start01.service
重启生效即可。
总结
本文仅仅简单介绍了在ubuntu20.04下面如何设置开机自启动的shell脚本。