树莓派开机自启动Py文件

第一种办法先简单提一下,比较简单。但是不知道为什么我开机同时运行三个python脚本的时候就不能运行了。

输入命令:

sudo nano /etc/rc.local
1
在exit 0上一行输入:
python /home/pi/test.py
开机运行命令是python + (空格) + python脚本位置
或者打开这个文件来修改自启动,网上有很多方法都是新建一个脚本来完成的。由于我们是自启动python文件,所以命令会有不同。
如果你要执行的程序路径为 /home/pi/run.py。在rc.local文件里Exit 0 前加入
sudo /usr/bin/python /home/pi/run.py

这样就设置好了开机自启python脚本。
重启 sudo reboot
如果你是想要程序死循环不退出一直执行 那么你必须确保在命令的最后添加“&”符号让命令运行在其后台。
python /home/pi/myscript.py &
必须是绝对路径

这个时候怎么看我们的程序是否自启动了呢
sudo systemctl status rc-local
可以查看运行状态来判断我们的程序是否正确运行

第二种方法带桌面
在/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在树莓派启动后也自动启动

Name、Comment、Icon 可以自定,表示启动项的名称、备注和图标。Exec 表示调用的指令,和在终端输入运行脚本的指令格式一致。如果你的树莓派没有png图标,那么就和我一样,找到python_game文件夹,那里有几个简单的图标可以现成拿来使用。
sudo reboot

3 方法3 doma化
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

方法四:

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

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

你可能感兴趣的:(树莓派开机自启动Py文件)