raspberrypi 树莓派+Python开机启动

最简单粗暴的方法():
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 python

import RPi.GPIO as GPIO
import time
GPIO.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 INFO

case "$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
        ;;
esac
exit 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=ScanTest
Comment=My Python Program
Exec=python /home/pi/ScanTest/Scan.py
Icon=/home/pi/ScanTest/Scan.png
Terminal=false
MultipleArgs=false
Type=Application
Categories=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脚本。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值