2019년 4월 7일 일요일

라즈베리파이 부팅시 python 스크립트 실행 (Auto start python script at Raspberry Pi booting)


검색해보면 /etc/profile.d/bash_completion.sh 여기에 추가하면 된다고 되었는 부분이 있는데 테스트해보면 아래 경로에 추가하면 계정이 login 될때 계속 실행되는 문제가 발생합니다. (따라서 비추천 합니다.)

/etc/rc.local 파일에 추가합니다. 필요한경우 python 스크립트에서 delay를 넣도록 합니다. time.delay(초) 함수를 이용합니다.

sudo vi /etc/rc.local

아래 문장 추가함 마지막에 '&' 표시는 스크립트가 완료될때까지 기다리지 않고 자식 프로세서로 실행시킨다는 의미입니다.
python3 home/pi/server_bot.py &

소스코드
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

python3 /home/pi/server_bot.py &

exit 0


실행되었는지 확인 방법

ps -e | grep python3
ps -e 목록에 나타나지 않으면 실행이 안된것 입니다.


디버깅 방법

var/log/daemon.log 파일 확인

Mar 31 10:45:00 raspberrypi rc.local[379]: Traceback (most recent call last):
Mar 31 10:45:00 raspberrypi rc.local[379]:   File "/home/pi/work/rpi1_server_bot/server_bot.py", line 9, in <module>
Mar 31 10:45:00 raspberrypi rc.local[379]:     import psutil
Mar 31 10:45:00 raspberrypi rc.local[379]: ImportError: No module named 'psutil'

psutil 이 command line으로 직접 동작할때는 실행이 되었는데 부팅시점에는 모듈이 없다고 나오는 경우가 있습니다.
https://raspberrypi.stackexchange.com/questions/78141/python-script-fails-with-importerror-when-run-from-rc-local
psutil이 root권한으로 설치가 안되어 있던게 문제였네요 아래와 같이 재설치 하였습니다.
sudo pip3 install psutil

댓글 없음:

댓글 쓰기