Technical/OS, Infra
Linux에서 부트시 스크립트 자동실행 설정하기
Barracuda
2010. 3. 20. 15:04
반응형
기본적으로 Unix 계열의 OS는 아래의 7개 모드로 구분된 Run level을 가진다
0 - Halt status
1 - Single User
2 - Multi User, No Networking
3 - Multi User, Full Networking
4 - Reserved
5 - 3 & X windows
6 - Restarting status
위 각각의 상태로 시스템이 전환될 때 자동적으로
/etc/rc.d/rc?.d/ 의 스타일로 7개의 서브 dir 이 준비되어 있고
각각의 디렉토리내에는 S??scriptname, K??scriptname 형태의 파일들이 존재하는데
S는 start, K는 kil, ??의 숫자는 해당 모드로 진입했을때의 실행순서이고
scriptname은 실행되어야 할 스크립트 파일의 이름이다. 일반적인 Daemon들의 실행방식이라면
scriptname start | stop | restart 의 형식으로 동작될 것이다.
예를 들어 aaa 라는 프로그램을 만들고 이를 실행, 중지, 재기동할 수 있는 script를 runaaa 라고 만들었다면, 이 runaaa 라는 파일을 /etc/init.d(Debian계열, ubuntu 등) 또는 /etc/rc.d/init.d(RH계열, cent등)에 복사하고 ln 명령으로 symbolic link를 /etc/rc?.d/S99runaaa 내에 생성한다. 99는 rc?.d 디렉토리의 기존 스크립트 번호를 기준으로 설정자 판단에 따라 결졍하는 순서 값이다.
실제로는 아래의 7개 link 명령을 root 계정으로 수행한다.
# ln -s /etc/init.d/runaaa /etc/rc0.d/K99runaaa
# ln -s /etc/init.d/runaaa /etc/rc1.d/K99runaaa
# ln -s /etc/init.d/runaaa /etc/rc2.d/S99runaaa
# ln -s /etc/init.d/runaaa /etc/rc3.d/S99runaaa
# ln -s /etc/init.d/runaaa /etc/rc4.d/S99runaaa
# ln -s /etc/init.d/runaaa /etc/rc5.d/S99runaaa
# ln -s /etc/init.d/runaaa /etc/rc6.d/K99runaaa
즉 위의 설정으로 runlevel 0, 1, 6일때는 Kill을, 2, 3, 4, 5 일때는 Start를 시스템에서 자동으로 수행시켜 준다
이 과정을 자동으로 해 주는 시스템유틸리티가 chkconfig 이다. 즉 /etc/init.d에 runaaa 스크립트를 복사한 상태에서
# chkconfig --add runaaa
를 수행하면 별도로 위에서처럼 symbolic link 를 수행해주지 않아도 된다. 아래와 같이 확인 해 보자
# chkconfig --list | grep runaaa
만약 chkconfig가 시스템에 설치되어 있지 않다면 yum 또는 apt-get 으로 설치하여 사용한다
# sudo apt-get install chkconfig
반응형