在Ubuntu系统下,特别是树莓派、旭日派等开发板,需要直接启动控制外设,就需要设置开机自启动直接运行程序文件。其方法有多种,本文在系统文件/etc/init.d/ 进行.sh配置进行实现。Ubuntu系统下,目录/etc/init.d/中包含许多系统服务的启动和停止脚本,通过配置此目录下的sh文件,可以为系统添加启动项。
任务:将/home/sunrise/taopy/目录下的tao1.py设置为启动项。当然不仅.py文件,其它格式文件都可按此参考进行配置。本文就以python3为例进行说明配置。
实现步骤:
一、在目录 /etc/init.d/ 添加.sh启动文件。使用超级用户终端创建一个启动脚本文件,以 .sh 结尾,并将其放置在 /etc/init.d 目录中。例如,创建名为 myset1.sh 的脚本:
$ sudo nano /etc/init.d/myset1.sh
复制以下内容:
-------------------------------------------------------------------
#!/bin/bash
### BEGIN INIT INFO
# Provides: your_service_name
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start your_service_name at boot time
# Description: Enable service provided by your_service_name
### END INIT INFO
python3 /home/sunrise/taopy/tao1.py &
exit 0
-------------------------------------------------------------------
说明:红色为文件路径,注意:python3空格/home/sunrise/taopy/tao1.py &
Ctil+X 退出,
Y-替换保存。
于是在 /etc/init.d/生成.sh文件。路径中的文件为自启动文件。
二、设置脚本的执行权限:运行以下命令设置脚本的执行权限:给myset1.sh设置执行权限
sudo chmod +x /etc/init.d/myset1.sh
三、启用自启动服务:运行以下命令以将脚本添加到启动项列表中:添加启动项myset1.sh
sudo update-rc.d myset1.sh defaults
四、启动服务:运行以下命令以启动服务:myset1设置为开机自启动
sudo service myset1.sh start
五、重启开发板验证自启动服务程序是否运行正常。出现以下代码表示运行正常。
root@ubuntu:~# sudo systemctl status myset1.service
● your_script_name.service - LSB: Start your_service_name at boot time
Loaded: loaded (/etc/init.d/your_script_name; generated)
Active: active (exited) since Wed 2023-04-19 15:01:12 CST; 57s ago
Docs: man:systemd-sysv-generator(8)
Process: 2768 ExecStart=/etc/init.d/your_script_name start (code=exited, status=0/SUCCESS)
python启动文件内容
六、重启后测试串口和GPIO口,可知开启自启动实现pthon程序运行。
如果想禁用开机启动:
sudo update-rc.d myset1.sh remove
---------------------------------------------------
这些文件操作可以用上
1.强制删除文件夹并提示
sudo rm -r 文件名
2.强制删除文件夹并不提示
sudo rm -rf 文件名
3.删除文件
sudo rm -f 文件名