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