(一)
首先写个你得有个需要运行的python脚本
我这里是几个自己的程序(注意的的py程序也需要chmod进行777权限操作,不然会运行失败)
文件保存在/home/pi/share/ip_acquire.py
一 首先给你的py文件增加权限
chmod 777 /home/pi/share/ip_acquire.py
二 开机启动脚本
保存脚本为/etc/init.d/my_start文件
#!/bin/bash
case "$1" in
start):
echo "Starting app"
nohup python3 /home/pi/share/ip_acquire.py &
;;
stop):
echo "to"
#kill $( ps aux | grep -m 1 'python3 /home/pi/share/ip_acquire.py' | awk '{ print $2 }') ;; *)
echo "Usage: service start_tool start|stop"
exit 1 ;;
esac
exit 0
三 设置python脚本开机启动
sudo chmod 777 /etc/init.d/my_start
这样启动改脚本用service 命令就可以,在使用该指令前,你需要重启一下系统,不然会提示没有该服务
sudo service my_start start#启动
sudo service my_start stop#停止
最后设置开机启动就好了
sudo update-rc.d my_start defaults
这样就完工了,重启树莓派就会程序自动跑起来了,停止用
sudo service my_start stop就行
在这里需要注意:
因为这个开机自启是在机器还没完成初始化进程的时候就启动的,所以在你的python程序的开头最好加入一个time.sleep函数休眠20秒,强迫程序在系统初始化成功后进行运行。不然可能会因为系统还没准备好你的程序就强行运行而导致启动失败。
(二)
编辑rc.local文件:
在你的树莓派上,选择一个文本编辑器编辑/etc/rc.local文件。你必须使用root权限编辑,例如:
sudo vim /etc/rc.local
在注释后面添加命令,但是要保证exit 0这行代码在最后,然后保存文件退出。
如果你的命令需要长时间运行(例如死循环)或者运行后不能退出,那么你必须确保在命令的最后添加“&”符号让命令运行在其它进程,例如:
python /home/pi/myscript.py &
否则,这个脚本将无法结束,树莓派就无法启动。这个“&”符号允许命令运行在一个指定的进程中,然后继续运行启动进程。
另外,确保文件名使用绝对路径,而不是相对于你的home目录的相对路径。例如:使用/home/pi/myscript.py而不是用myscript.py。
树莓派怎开机就执行一条命令?
最简单的方法是直接添加到/etc/rc.local文件的exit语句前。会写启动脚本就写一个放到init.d,再创建个软链接到rc.2也可以用第三方启动管理软件,但是不推荐。
为何我加在/etc/rclocal中的脚本不可以开机自启动
打开gpedit.msc
计算配置--windows 设置--脚本(启动/关机)--
双击启动---添加rc.local文件 保存 退出 .
也可以把rc.local文件保存在
C:\WINDOWS\System32\GroupPolicy\Machine\Scripts\Startup这里,
再添加rc.local文件 保存 退出 .
(三)
这个方式不用修改 rc.local 文件。机制上类似于 Windows 的“开始”菜单中的“启动”菜单。方法如下:
在 /home/pi/.config 下创建一个文件夹,名称为 autostart,并在该文件夹下创建一个xxx.desktop文件(文件名以.desktop结尾,前面可以自定义),文件内容如下:
[Desktop Entry]
Name=example
Comment=My Python Program
Exec=python /home/pi/example.py
Icon=/home/pi/example.png
Terminal=false
MultipleArgs=false
Type=Application
Categories=Application;Development;
StartupNotify=true
以上 Name、Comment、Icon 可以自定,分别表示这个启动项目的名称、备注以及显示的图标。Exec 表示调用的指令,和在终端输入运行脚本的指令格式一致。