본문 바로가기
IT관련 정보

라즈베리파이 sudo 스크립트 + python 스크립트 부팅 후 안전 자동 실행

by mainspring 2020. 12. 5.

안녕하세요 이번에 다룰내용은.

라즈베리파이 부팅후 자동실행입니다.

그러나 많이들알려져있는 .profile 등의 방법도 있지만. 

잘못하면 부팅이 켜지지않는 무서운 문제점을 가지고 있죠.

 

제가 이번에 말씀드릴 방법은

 

crontab 을 이용한 방법입니다.

 

crontab = 리눅스내 특정 시간때 프로그램을 자동으로 실행 시켜주는 라이브러리? 라고 보시면됩니다. 정확히는 다를수 있습니다. ( 친구귀 통해 들음) 

 

먼저 

$sudo crontab -e

를 입력하고 창내용을 봅시다.

굳이 주절주절 설명할 필요 없이 아래처럼

입력합니다. 

 

@reboot = 부팅 후 실행될 명령어

/usr/local/bin/pigpiod = 원래 파이썬 터미널 스크립트에서는 $sudo pipgiod 로 썻습니다. (pigpio 서보모터 지터링 제거 컨트롤 데몬)

&& (다음에 실행할 스크립트 구분)

/usr/bin/python = 터미널에서 쓰는 $python과 같은말.

/home/pi/Desktop/gi/gi/nogui.py = 님들이 python nogui.py 라고 쓰는건 cd 로 폴더 이동해서 쓰는거고 저거는 절대경로 입니다. 

위 쓴것만 보면 대충 감이 오실텐데 그러면 

/usr/local/bin 뭐시기 이건 어케 아는거냐? 

 

먼저 제가 치는거는 터미널창에서

sudo pigpiod 를 치고 

cd 로 폴더에 이동 후, python nogui.py 로 실행했었습니다. 

우리가 알아야 할건 3가지 입니다.

1. pigpiod 의 경로

2. python 의 경로

3. nogui.py 의 경로.

3번 같은경우는 절대경로라 대충 탐색기 찾아보시면 아실꺼고

1,2가 문제지요? 

 

방법은 간단합니다.

그냥 터미널창에

$ which [ 궁금한 명령어 ] 

만치면 아래에 경로를 알려줍니다. 

그래서 저 경로를 우리가 터미널에치는 sudo pigpiod , python 대신에 넣어주면 됩니다. 

 

그후 crontab -e 에 제가 위에쓴것같이 샘플을 써주시고

컨트롤+X , Y 를 눌러서 저장해줍니다.

 

그러고 라즈베리파이를 재부팅 합니다.

 

그후 어떻게어떻게 실행될텐데..

위 스크립트가 제대로 실행되고 있나 궁금하시면 

위에 $ /usr/bin/python /home/Desktop/gi/gi/nogui.py 를 그대로 터미널에 쳐봅니다.

저같은경우 처음에는 스크립트가 실행되다가 멈췄는데 그이유는

스크립트 안에 mp3 경로를 상대경로로 지정해놔서 에러가 났었습니다.

그래서 꼭 스크립트 안의 파일 경로도 절대경로로 수정해주셔야합니다.

 

그다음. 잘실행은 돼.

실행은 잘돼 !!!

 

근데 실행이 잘되긴되는지... 아니면 실행되고있는애를 끄고싶은데..

이건 어떻게 하는지 궁금하실 수 있습니다.

그방법입니다.

 

먼저 여러분이 아셔야 할 커맨드 코드입니다.

$ps -ef = 현재 실행중인 프로세스들을 봅니다. 

위를 치시면. 현재 실행중인 프로세스들이 보이십니다. 

그곳에서 CMD부분에 내가 입력한 경로를 찾습니다.

 

그 다음 root 옆에 번호를 기억합니다. 그다음 

$sudo kill 434

$sudo kill 441 

을 입력하시면 

두가지 프로세스(백그라운드에서 실행중인 파이썬 스크립트, 라이브러리 데몬) 를 끌 수 있습니다.

 

 

위와같은 방법으로 .local/profile? 이나 시스템 부팅에 연관된 파일에 접근없이

안전하게 부팅후 sudo 스크립트, 파이썬 스크립트를 실행할 수 있습니다. 

도움이 되셨다면 댓글한번만 !

부탁드리겠습니다. 감사합니다!

 

댓글