-
[ubuntu] 부팅 시 자동 실행Study/Linux 2017. 8. 24. 10:04
### 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 INFOcase "$1" instart)start_scriptesac;;stop)stop_scriptesac;;*)echo "Usage: myservice {start|stop}" >&2exit 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 Config2번에서 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을 편집해 주면 실행이 잘되었음.'Study > Linux' 카테고리의 다른 글
WSL에서 comport 연결하기 (0) 2018.06.07 USB 드라이브 자동 마운트 (How to mount USB drive at startup) (0) 2017.11.19 [ubuntu-MATE] Odroid XU4 Qt creator 첫페이지 안보일때 (2) 2016.11.20 [ubuntu-MATE] root 로그인 활성화/자동로그인 (0) 2016.10.10 Multithreading, C++ 0x11 설정하기 (0) 2016.08.28