第一步 测试脚本制作
首先我们需要制作一个脚本来测试自启动是否有效。在终端下输入并回车新建脚本文件testboot.sh
$ nano testboot.sh
在里面写上我们要执行的代码。
例如我要测试的程序为 constant_current.py
#!/bin/sh
cd /home/pi/Desktop/
sudo python LD_current/constant_current.py
给脚本文件添加执行权限:
$ chmod 777 testboot.sh
如果用命令chmod 777 tt.htm,结果是任何人都有读、写、运行三项权限。这样子我们就不用担心权限问题了。
第二步 实现自启动
方法一:向rc.local文件添加启动代码
修改rc.local文件,在终端输入并回车:
$ sudo nano /etc/rc.local
在打开的文本中找到exit 0,在此之前添加的代码在启动时都会被执行,在exit 0 之前添加一行代码:
su pi -c "exec /home/pi/testboot.sh"
ctrl+o保存,ctrl+x退出,然后在终端输入:sudo reboot ,重启系统测试。
su命令是指定在pi用户下执行这条命令,-c 表示执行完这条命令之后恢复原来的用户。
注意:系统启动时在执行这段代码时是使用root用户权限的,如果不指定pi用户,可能会因为权限问题导致脚本执行失败。
方法二:将程序作为服务启动
在/etc/init.d/目录下新建一个服务脚本文件。在终端输入并回车
$ sudo nano /etc/init.d/testboot
在空白文件中输入以下内容:
#!/bin/sh
#/etc/init.d/testboot
### BEGIN INIT INFO
# Provides:testboot
# Required-Start:$remote_fs $syslog
# Required-Stop:$remote_fs $syslog
# Default-Start:2 3 4 5
# Default-Stop:0 1 6
# Short-Description: testboot
# Description: This service is used to start my applaction
### END INIT INFO
case "$1" in
start)
echo "start your app here."
su pi -c "exec ~/testboot.sh"
;;
stop)
echo "stop your app here."
;;
*)
echo "Usage: service testboot start|stop"
exit 1
;;
esac
exit 0
ctrl+o保存,ctrl+x退出。
设置脚本可执行权限:
$ sudo chmod 777 /etc/init.d/testboot
最后将该脚本作为服务设置开机自动加载:
$ sudo update-rc.d testboot defaults