본문 바로가기
라즈베리파이

라즈베리파이 프로그램 자동실행

by YJHTPII 2022. 5. 23.
반응형

https://creamp.tistory.com/8

 

라즈베리파이 프로그램 자동실행

앞서 wiringPi 라이브러리를 활용하여 라즈베리파이에서 실행할 수 있는 프로그램을 간단히 코딩해 보았는데 그렇다면 이렇게 개발한 프로그램을 부팅할 때 마다 자동으로 실행시켜 주려면

creamp.tistory.com

 

 

 

앞서 wiringPi 라이브러리를 활용하여 라즈베리파이에서 실행할 수 있는 프로그램을 간단히 코딩해 보았는데 그렇다면 이렇게 개발한 프로그램을 부팅할 때 마다 자동으로 실행시켜 주려면 어떻게 해야할까? 이 문제는 의외로 코드 몇줄 추가하는 것 만으로 간단히 해결할 수 있다. 리눅스 환경에서는 프로그램을 자동으로 실행시켜 줄 수 있는 다양한 방법을 지원하므로 각기 알맞는 방법을 알아보고 사용해보자.

 

 

1. rc.local

 

자동실행 방법 중에 간단하면서도 효과적인 방법 중 하나로서 여기에 명령을 적어주게 되면 라즈베리파이가 부팅시에 자동으로 root 권한을 가지고 프로그램을 실행시켜준다. 주의해야할 점으로는 시스템과 관련된 명령을 입력할 경우에 rc.local의 실행이 더 빠르기 때문에 실행되지 않을 수 있으며 프로그램에 에러가 있는 상태에서 명령어 뒤에 & 문자를 입력하지 않을 경우에는 부팅이 완료되지 않을 수 있으므로 유의해야 한다. 

 

 

  $ sudo nano /etc/rc.local

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/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 %sn” “$_IP”
fi
/home/pi/Desktop/Work/usbSerial & 
exit 0
cs

 

파일을 열면 다음과 같은 내용이 보일 것이다. 여기서 추가하고 싶은 명령어를 'fi' 와 'exit 0' 사이에 입력하면 된다. 앞서 언급했던것 처럼 rc.local은 root권한을 가지기때문에 sudo 나 su를 입력할 필요가 없다.(여기서 sudo가 쓰이는 경우는 다른 사용자로 프로그램을 실행시킬 경우에만 사용됨) 따라서 실행할 프로그램의 경로만 적어준 뒤에 &기호를 추가하면 자동실행 등록이 완료된다. &는 등록한 프로그램과 시스템 부팅이 별개의 프로세스로 진행되도록 분리해주는 역할을 한다.

 

반응형

댓글