본문 바로가기

개발자/Raspberry Pi3

라즈베리 파이3 부팅이 끝나면 자동으로 실행하게 하는 방법 bash_completion.sh

반응형




리즈베리파이의 이전 버전, 그러니까 B+ 까지는 /etc/rc.local 파일을 열어서 if ~~ fi 가 아닌곳, exit 0 전의 적당한 위치에 명령을 넣어 주면 되었다.


관련된 포스팅은 이것 참조 - 임랩스 기능 - Python 파일 자동실행하게 만들기 파이선 파일 자동실행되게....


출처: http://fishpoint.tistory.com/1587 


아래 코드를 보면 바로 그 위치에 # 표시로 주석 처리가 된 부분 처럼 넣어주면 라즈베리파이가 부팅 되면서 사용자가 지정한 파일이 자동으로 실행되었다. 마치 윈도우의 시작 프로그램 아래에 실행 아이콘을 넣어주는 것처럼 말이다.


아래 명령어로 파일을 열면


pi@raspberrypi:~ $ sudo nano /etc/rc.local 



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/bash -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
 
#
#여기에 실행파일을 지정함 
#C 언어 실행파일 이름이 dmartfarm 폴더 아래에 smartfam 이라면
#/hoome/pi/smartfarm/smartfarm & #꼭 & 불이기 백그라운드 실행
#
#파이썬 파일이 capture1sec.py 파일 이라면 
#/home/pi/capture1sec.py &
#
 
exit 0
               
cs



그런데 라즈베리 파이3 에서는 rc.local 파일에 넣어주니 이유는 모르지만 실행이 잘 안된다. 더군다나 실행파일이 Database, 네트워크 처리가 들어간 실행파일이라면 더욱 잘 되지 않는다. 그래서 알아보니 라즈베리 파이가 부팅이 완료되는 시점에 실행하는 파일이 찾아보니 /etc/profile.d/bash_completion.sh 파일이 있었다.


따라서 이 파일에 실행파일을 넣어주면 제대로 동작한다. 참고하시기 바란다. 실행파일을 넣는 위치는 아래 코드를 보자.



1
2
3
4
5
6
7
8
pi@raspberrypi:~ $ cd /etc/
pi@raspberrypi:/etc $
pi@raspberrypi:/etc $ cd profile.d/
pi@raspberrypi:/etc/profile.d $
pi@raspberrypi:/etc/profile.d $ ls
bash_completion.sh
pi@raspberrypi:/etc/profile.d $
      
cs


위에 보이는 바로 그 파일 되겠다.


아래 명령어로 열어보면 


pi@raspberrypi:/etc/profile.d $ sudo nano bash_completion.sh



열어 보면 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Check for interactive bash and that we haven't already been sourced.
if [ -n "$BASH_VERSION" -a -n "$PS1" -a -z "$BASH_COMPLETION_COMPAT_DIR" ]; then
# Check for recent enough version of bash.
bash=${BASH_VERSION%.*}; bmajor=${bash%.*}; bminor=${bash#*.}
if [ $bmajor -gt 4 ] || [ $bmajor -eq 4 -a $bminor -ge 1 ]; then
    [ -r "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" ] && \
        . "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion"
    if shopt -q progcomp && [ -r /usr/share/bash-completion/bash_completion ]; $
        # Source completion code.
        . /usr/share/bash-completion/bash_completion
    fi
fi
unset bash bmajor bminor
fi
#
#여기에 실행 파일을 넣어준다. 형태는 위에서 설명한 rc.local 에 적는 모양과 동일하다.
#       
cs


위에 보이는 노란색 # 표시에 #을 지우고 실행파일을 넣어준다.


예) shell 파일


sudo ./s-farm


예) 실행파일


pi@raspberrypi ~/iot_farmserver/output $ sudo ./server_farm &


꼭 뒤에 & 붙이기 - 백그라운드 실행. 터미널에서 프롬프트 나오게 해야 합니다.


예) 스트리밍 서버


export STREAMER_PATH=/home/pi/mjpg-streamer/mjpg-streamer-experimental

export LD_LIBRARY_PATH=$STREAMER_PATH

$STREAMER_PATH/mjpg_streamer -i "input_raspicam.so -d 200" -o "output_http.so -$


즐 개발하시길~ 아래 사진에 위에 설명한 파일이 보입니다~^^










반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

귀사가 성공하기까지의 긴 고난의 시간을 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩