美文网首页Linux树莓派树莓派
几种设置树莓派开机自启的方法

几种设置树莓派开机自启的方法

作者: 遗步看风景 | 来源:发表于2017-01-04 22:04 被阅读20850次

(一)
首先写个你得有个需要运行的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 表示调用的指令,和在终端输入运行脚本的指令格式一致。

相关文章

网友评论

  • 穿山甲开源工作室:您好,我用的方法1,创建了一个blink,执行sudo service blink start后,提示:Job for blink.service failed. See 'systemctl status blink.service' and 'journalctl -xn' for details.请问这是怎么回事?chmod x和777改都有了,其他都是复制您的,路径我也都确认无误
  • 728a7e8e3111:对于方法三怎么结束,或者取消这个开机自启动的脚本,使以后能正常使用树莓派进入图形界面?
    遗步看风景:@LGH_1294 删除这个desktop文件应该就可以了,至于正常使用树莓派我不太明白什么意思,因为我用第三个方法的时候实际上是不影响树莓派使用的。
  • 山中人兮芳杜若_2736:方法二不自启动的话为什么要在windows上做修改啊,直接在pi上做的话有解决办法吗?
  • tommycxd:按照楼主的第一种方法做了,但是不起作用啊。我查了下据说是JESSIE启动方式变了,不能通过添加service启动了。楼主用的系统什么版本?有解决办法吗?
    遗步看风景:@tommycxd 如果你发现启动不了,那么有三种可能,第一,操作错误,这个你可以仔细核对一下。第二,文件权限没添加,需要chmod +777 所有文件名 第三,在启动过程中,你的程序启动太早,导致硬件初始化还没成功你就调用了那部分功能,比如网络,树莓派启动过程中网络还没配置好,你的程序就进行网络请求,那显然是会错误退出的。这里就需要你让程序延时启动。
    遗步看风景: @tommycxd 这个我也不太清楚,但是我也是最新版系统,我用的第一种办法可以成功

本文标题:几种设置树莓派开机自启的方法

本文链接:https://www.haomeiwen.com/subject/qmsavttx.html