본문 바로가기

개발자/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 -$


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










반응형

더욱 좋은 정보를 제공하겠습니다.~ ^^

  • 한승호 2018.08.05 16:49 댓글주소 수정/삭제 댓글쓰기

    혹시 roscore같은 명령어 같은것도 자동실행시킬수 있나요??

  • ROS 에서 돌아가는 명령인가 보군요. ROS 플랫폼상에서 실행되는 명령이라면 안될 수도 있습니다.^^

  • ㅠㅠㅠ 2018.09.13 17:35 댓글주소 수정/삭제 댓글쓰기

    3b 에 텐서플로우 깔려있고 파이썬 파일 자동실행 하려고 하는데 안되네요ㅠㅠ

  • 이유진 2018.10.09 12:58 댓글주소 수정/삭제 댓글쓰기

    감사합니다. 그대로 따라했는데, 이제 모니터가 아예 안나와서요 ㅠ 제가 처음해보는거라 이해도가 부족해서 그런데 htmi 연결 시에는 모니터가 보이게 바꾸는 방법이 없을까요???

    • 기린 2018.10.10 22:43 댓글주소 수정/삭제

      SD 카드를 라즈비안 이미지로 제대로 구우셨다면 HDMI 모니터를 자동으로 인식해서 화면이 부팅화면으로 보일 겁니다. SD 카드 이미지 확인이 우선입니다. 전원 불이 녹색으로 깜박깜박하면서 부팅되는 과정이을 우선 확인해 보세요. ^^

  • dasfas 2018.11.24 19:03 댓글주소 수정/삭제 댓글쓰기

    부팅끝나고 스크립트는 실행되는데요
    라즈베리파이 화면이 모니터에 안뜨네요 ;;
    어찌하면될까요

    • 스크립트 실행 명령 뒤에 & 붙여보세요. 그러니까 백그라운드로 실행이 되게하시고 화면은 명령 프롬프트 $ 표ㅣ가 나올겁니다. 또 문의 주세요. ^^

  • 유성현 2019.01.03 11:53 댓글주소 수정/삭제 댓글쓰기

    위에 dasfas님과 비슷한 현상인데, 부팅이 끝나야 하는데 서버실행 스크립트때문에 &을 실수로 안붙히고 실행시켜서 서버 구동하는 것 때문인가 화면이 부팅으로 넘어갈 수가 없어 bash_completion.sh 파일을 수정할 수 없는 말그대로 교착상태에 봉착했습니다... 이거 어떻게 해결해야할까요...

    라즈비안은 복구모드나 안전모드도 제대로 지원되지 않는거 같아서요...

  • 하 그렇군요. 천상 다시 이미지를 구워서 작업을 다시 해야되나요? 듣고보니 그런 문제가 있군요. 더 찾아 보겠습니다. ㅠ

  • 전자공돌 2019.05.20 14:32 댓글주소 수정/삭제 댓글쓰기

    제가 자동실행으로 스트리밍을 띄워놨는데 스트리밍이 실행이 계속되고 안꺼지는 현상이 발생합니다. HDMI로 연결해서 계속 스트리밍에 연결된상태만 확인되는데 실행한 파일을 끄려고 하면 어떻게해야되나요? ctrl+c, ctrl+z 등 여러반 다 눌러봐도 안꺼지네요 ㅠ

  • qorrlgus 2019.09.10 04:53 댓글주소 수정/삭제 댓글쓰기

    rtsp서버를 자동으로 열 방법이 없을까요?? 위에 방법으론 안되네요 ㅠㅠ

  • 잘못된정보 2019.09.16 04:18 댓글주소 수정/삭제 댓글쓰기

    잘못된 정보입니다. 해당 스크립트는 bash를 실행할때 실행되는것이므로
    부팅시가 아니라, 쉘을 처음 사용할때마다 계속 실행되는겁니다.

  • 초기화했네요 2020.02.14 14:27 댓글주소 수정/삭제 댓글쓰기

    &를 안 붙여서 그런가 윗분들처럼 무한에러에 빠져 결국 라파 초기화 했내요......
    빠른 시일 내에 본문을 수정하시던가 추가 글을 덧붙여야 할 듯 합니다.

  • 준톨이짱짱 2020.06.08 19:46 댓글주소 수정/삭제 댓글쓰기

    rc.local에 경로를 적어서 파이썬 파일을 실행하려 하였더니 허가 거부가 발생합니다.
    이런 경우에는 어떻게 해야 하나요?

  • rc.local 파일에 있는 코드에 &가 추가가 안되어있네요.. ㅠ