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指令碼。