raspberrypi 树莓派+Python开机启动

来源:互联网 发布:ios11升级数据会丢失吗 编辑:程序博客网 时间:2024/05/14 08:15

最简单粗暴的方法():
EDITING RC.LOCAL(编辑rc.local文件)

在你的树莓派上,选择一个文本编辑器编辑/etc/rc.local文件。你必须使用root权限编辑,例如:

sudo vim /etc/rc.local

在注释后面添加命令,但是要保证exit 0这行代码在最后,然后保存文件退出。

WARNING(注意)

如果你的命令需要长时间运行(例如死循环)或者运行后不能退出,那么你必须确保在命令的最后添加“&”符号让命令运行在其后台。

python /home/pi/myscript.py &

这个“&”符号允许命令运行在一个指定的进程中,然后继续运行启动进程。

另外,确保文件名使用绝对路径,而不是相对于你的home目录的相对路径。例如:使用/home/pi/myscript.py而不是用myscript.py。


方法一(linux init.d的服务方式):

1、首先写个简单的python 脚本
脚本很简单,就是树莓派上一个灯闪烁程序
文件保存在/home/pi/script/ledblink.py

#!/usr/bin/env pythonimport RPi.GPIO as GPIOimport timeGPIO.setmode(GPIO.BCM)GPIO.setup(21,GPIO.OUT)while True:  try:    GPIO.output(21,True)    time.sleep(1)    GPIO.output(21,False)    time.sleep(1)  except (KeyboardInterrupt, SystemExit):    GPIO.close()    print "exit"

2、开机启动脚本
保存脚本为/etc/init.d/ledblink文件

#!/bin/bash# /etc/init.d/ledblink### BEGIN INIT INFO# Provides: embbnux# Required-Start: $remote_fs $syslog# Required-Stop: $remote_fs $syslog# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: ledblink initscript# Description: This service is used to manage a led### END INIT INFOcase "$1" in    start)        echo "Starting LED Blink"        /home/pi/script/ledblink.py &        ;;    stop)        echo "Stopping ledblink"        #killall ledblink.py        kill $(ps aux | grep -m 1 'python /home/pi/script/ledblink.py' | awk '{ print $2 }')        ;;    *)        echo "Usage: service ledblink start|stop"        exit 1        ;;esacexit 0

3、 设置python脚本开机启动

sudo chmod +x /etc/init.d/ledblink

这样启动改脚本用service 命令就可以

sudo service ledblink start#启动sudo service ledblink stop#停止

最后设置开机启动就好了

sudo update-rc.d ledblink defaults

这样就完工了,重启树莓派就会发现led自己闪烁了,停止用

sudo service ledblink stop

参考: Run a script on start up


方法二:(使用桌面环境才有用)

用Python写了一个程式,想要在树莓派开机时自动启动,网上看了很多人说可以通过如下方式实现:

修改rc.local文件:sudo nano /etc/rc.local

在文件末尾 ,在exit 0 这一行之前,加入一行:
python /home/pi/programname

然后Ctrl+X,再选择Y退出。

可我试了多次也未能成功。我最终实现的方式如下:

在/home/pi/.config下创建一个文件夹,名称为autostart,并在该文件夹下创建一个xxx.desktop文件,文件内容如下:

[Desktop Entry]Name=ScanTestComment=My Python ProgramExec=python /home/pi/ScanTest/Scan.pyIcon=/home/pi/ScanTest/Scan.pngTerminal=falseMultipleArgs=falseType=ApplicationCategories=Application;Development;StartupNotify=true

之后sudo reboot重启,就可以看到Scan.py在树莓派启动后也自动启动了。


方法三:

要在rc.local中启动python脚本,最好将python脚本Daemon化,
请参考这里:
http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/

我成功在rc.local中启动了daemon化后的python脚本。

0 0
原创粉丝点击