1. 程式人生 > >raspberrypi 樹莓派+Python開機啟動

raspberrypi 樹莓派+Python開機啟動

最簡單粗暴的方法():
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中啟動了daemon化後的python指令碼。