树莓派中python文件开机自启动方法

因为项目的需要树莓派开机自启动python文件,自己大概试了多种方法才成功。

首先我这里的python脚本文件是不断循环运行的,而且要启动4个python脚本文件,我这里重点写一下网上常用的2种方法。

一.桌面自启动(必须是利用桌面运行):在.config文件中的autostart文件(如果没有就新建一个)新建一个以.desktop为后缀的文件。内容为

[Desktop Entry]

Type=Application

Name=testboot

NoDisplay=true

Exec= python3 /home/pi/testboot.py

保存成功后 在terminal窗口sudo reboot即可。

注意:这种方式是依赖桌面的,所以只要一进入桌面,就要运行一个,比如,远程连接一次就需要运行一次。采用远程连接就容易死机(我自己就被这种方式弄晕了,后面只能采用直接用显示屏了)。

二.使用rc.local文件:
在terminal窗口 cd /etc 进入当前路径sudo nano rc.local ,在exit 0 前输入python3 /home/pi/testboot.py 保存可以成功,但是重启可能不成功。因此在exit 0 前输入 su pi -c “python3 /home/pi/testboot.py &” 这种写法更好。

su pi :是以pi用户执行。 -c:执行完回到当前的用户。

作者:xiao韩
来源:CSDN
原文:https://blog.csdn.net/qq_28821995/article/details/82774380
版权声明:本文为博主原创文章,转载请附上博文链接!

方法二的另一家之言:

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

sudo vim /etc/rc.local

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

WARNING(注意)

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

python /home/pi/myscript.py &

这个“&”符号允许命令运行在一个指定的进程中,然后继续运行启动进程。
另外,确保文件名使用绝对路径,而不是相对于你的home目录的相对路径。例如:使用/home/pi/myscript.py而不是用myscript.py。

作者:bill0-Ng
来源:CSDN
原文:https://blog.csdn.net/b108074013/article/details/47443871
版权声明:本文为博主原创文章,转载请附上博文链接!

三、树莓派把一个python脚本作为服务运行,配置开机自动启动
发现简单的把python脚本加到rc.local好像无法自动启动,于是找到了下面的方法,做成一个服务。
首先写个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”
开机启动脚本
保存脚本为/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
设置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就行

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值