[Ubuntu]자동실행

2017. 12. 13. 09:37OS/Ubuntu

### ubuntu에서 프로그램 자동실행 방법 ###


1. rc.local에 script 추가


  • # sudo gedit rc.local (or sudo vi rc.local)
  • 'exit 0' 윗줄에 프로그램 실행 script 추가

...


echo "Start my program"

cd /home/user/dev

sudo ./program


exit 0


이 방법은 rc.local이 호출된 이후 프로그램 종료 전까지 root 계정에서 다른 작업이 불가함

다른 계정으로 로그인 해도 느리게 동작하는 경우가 있음


2. process를 생성하여 rcN.d에 연결


  • Shell script 파일을 작성하여 /etc/init.d에 추가 (ref. /etc/init.d/skeleton)
    • INIT INFO 작성시 참고 사항: 아래 두 조건에 따라 rcN.d에 연결될때 번호나 위치가 달라짐
    • Required-Start/Stop - Process가 실행/종료되기 이전에 준비되어야 할 조건들 나열
    • Default-Start/Stop - Process가 실행/종료되는 run level 나열
#! /bin/sh

### BEGIN INIT INFO
# Provides:          myservice
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.
### END INIT INFO

case "$1" in
  start)
  start_script
esac
;;
  stop)
stop_script
esac
;;
  *)
echo "Usage: myservice {start|stop}" >&2
exit 3
;;
esac

:
  • service script를 rcN.d에 연결
    • case 1) # sudo update-rc.d myservice defaults
      • defaults 옵션은 INIT INFO에 작성한 조건에 따라 myservice의 run level과 실행 순서를 결정함
    • case 2) # sudo update-rc.d myservice start 20 2 3 4 5
      • 20번 순서로 2, 3, 4, 5의 run level에서 수행
      • /etc/rc2.d, /etc/rc3.d, /etc/rc4.d, /etc/rc5.d에 S99myservice 연결파일 생성됨
    • 삭제시: #sudo update-rc.d -f myservice remove
    • usage [update-rc.d] : https://www.debuntu.org/how-to-managing-services-with-update-rc-d/

위 방법으로 rcN.d에 연결파일이 생성되어도 실제 부팅시에 실행되지 않는 경우 발생함

3. SysV Runlevel Config

2번에서 rcN.d에 연결파일이 생성되어 있더라도 run level이 제대로 설정되지 않는 경우가 발생하며,
이럴 때는 process 수행이 잘 안되는 경우가 있음
  • 2번 수행 후 run level 편집
  • case 1) # sudo sysv-rc-conf
    • 없을 경우:  # sudo apt-get install sysv-rc-conf
    • 등록한 process의 필요한 run level 칸이 X가 채워지도록하고 종료하면 끝
  • case 2) # sudo sysv-rc-conf --level 2345 myservice on
    • usage [sysv-rc-conf] : http://sysv-rc-conf.sourceforge.net/

process script가 단순 shell script인 경우 2번 방법으로 프로세스 실행이 잘 안되는 경우가 많았으나,
3번 방법으로 run level을 편집해 주면 실행이 잘되었음.



출처: http://dh8607.tistory.com/207 [::: Blog from Hoons :::]

'OS > Ubuntu' 카테고리의 다른 글

[Ubuntu] Console에서 로그인 안되고 SSH 로그인 되는 문제  (0) 2021.07.15
[Ubuntu] 메모리  (0) 2018.01.22
[Ubuntu] 네트워크 상태 확인  (0) 2017.11.21
[Ubuntu] 시간동기  (0) 2017.11.13
[Ubuntu] Mate root 계정  (0) 2017.09.29