最近有个项目利用树莓派来完成,主要是在树莓派上用python写了个脚本来处理一些信息与逻辑。这边就遇到一个问题,即设置该脚本在开机的时候自动运行,而不是需要人登陆到树莓派上在执行这个程序,这样太麻烦了,顶多在实验室玩玩,拿不出去。本文主要讲诉设置该python脚本在树莓派上自动运行。
一、首先写个简单的python 脚本
脚本很简单,就是树莓派上一个灯闪烁程序,需要学gpio可以看我之前的博客
文件保存在/home/pi/script/ledblink.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/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文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #!/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脚本开机启动
1 | sudo chmod +x /etc/init .d /ledblink
|
这样启动改脚本用service 命令就可以
1 2 | sudo service ledblink start #启动
sudo service ledblink stop #停止
|
最后设置开机启动就好了
1 | sudo update-rc.d ledblink defaults
|
这样就完工了,重启树莓派就会发现led自己闪烁了,停止用sudo service ledblink stop就行。
参考: Run a script on start up
原文链接
|