树莓派用服务方式设置开机启动


最近有个项目利用树莓派来完成,主要是在树莓派上用python写了个脚本来处理一些信息与逻辑。这边就遇到一个问题,即设置该脚本在开机的时候自动运行,而不是需要人登陆到树莓派上在执行这个程序,这样太麻烦了,顶多在实验室玩玩,拿不出去。本文主要讲诉设置该python脚本在树莓派上自动运行。

一、首先写个简单的python 脚本

脚本很简单,就是树莓派上一个灯闪烁程序,需要学gpio可以看我之前的博客
文件保存在/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就行。

参考: Run a script on start up

原文链接

这是一篇发布于 7年 前的文章,其中的信息可能已经有所发展或是发生改变,请了解。


1 Trackback / Pingback

  1. eee – raspberry磨刀小试

发表评论

你的邮件地址不会公开


*