개발자/Raspberry Pi3

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

지구빵집 2017. 9. 19. 20:54
반응형




리즈베리파이의 이전 버전, 그러니까 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 -$


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










반응형