데비안에서 부팅시 시작 프로그램 등록

http://blog.infeat.net/index.php?pl=61&setdate=200605 에서 잘라왔음.
내가 사용한 데비안 3.14r2 에서 update-rc.d 를 실행할때는 절대 경로가 아닌
/etc/init.d/ 를 기준으로 돌아갔었다

----------------------------------------------------------------------

데비안에서 부팅시 실행하기를 원하는 스크립트를 등록하기 위해서 두 가지
방법이 있습니다.
첫째는 /etc/rc.Boot 라는 디렉토리에 실행하기를 원하는 스크립트를 넣어두는
방법이 있고
둘째는 /etc/init.d 디렉토리에 실행하기를 원하는 스크립트를 넣어두고
update-rc.d 라는 명령을 적당한 옵션을 주어 실행하여 기동시 실행 되도록
등록하는 방법이 있습니다.

우선 이 두가지 방법의 차이를 설명하기 위해 데비안의 기동 방법에 대해서
간단하게 설명을 하겠습니다.

모든 유닉스처럼 데비안도 init를 실행해서 기동됩니다.
init 설정파일(/etc/inittab)은 첫번째 실행할 스크립트로 /etc/init.d/rcS를
지정합니다.
이 스크립트는 파일 시스템을 검사, 연결하고 모듈을 적재합니다.
그리고 네트워크 서비스(/etc/init.d/networking 스크립트를 부름)를 시작하고
시계를 맞추며 그외 다른 초기화를 합니다.
다음으로 /etc/rc.boot/에 있는 다른 모든 스크립트(파일이름에 '.'이 있는
경우는 제외됩니다)를 실행합니다.
그리고 다음으로 스크립트는 기본 키보드를 지정하고 잃어버린 편집파일을
복구하며 직렬 포트를 설정합니다.
여기까지가 기본 기동 과정입니다.

기동 과정을 종료한후 init은 기본 런레벨을 지정한 디렉토리(/etc/rc?.d)의
모든 스크립트를 실행합니다.
시스템 V 호환 유닉스들 처럼 리눅스도 아래 7가지 실행계층을 가집니다.

0 (시스템 정지)
1 (단일 사용자 모드)
2 에서 5 (여러가지 다중 사용자 모드)
6 (시스템 재기동)

데비안 시스템은 다중 사용자 상태로 들어가기 전에 실행계층 '2'를 기본으로
해서 시작하고 /etc/rc2.d/에 있는 스크립트를 실행합니다.

사실 /etc/rc?.d/ (? 은 0-6의 런레벨)디렉토리에 있는 모든 스크립트는
/etc/init.d/에 있는 스크립트로 모두 링크연결 되어 있습니다.
update-rc.d명령은 /etc/init.d/와 rc?.d 디렉토리의 파일 사이에 연결을 만듭
니다.
즉 위에서 설명한 /etc/init.d/ 에 실행하기를 원하는 스크립트를 위치시키고
update-rc.d 로 등록한다는 말은 /etc/init.d 에 위치시킨 파일을 각 런레벨을
지정한 디렉토리(/etc/rc?.d)로 링크파일을 위치 시킨다는 말입니다. 

/etc/rc?.d/ 디렉토리를 보면 링크로 연결된 스크립트들의 이름이 'K' 와 'S'로
시작되는 것을 볼수 있을 겁니다.
/etc/rc?.d/디렉토리에 있는 파일 이름은 /etc/init.d/에서 실행할 스크립트의
실행 방향 을 지시하기 위해 선택되어 집니다.

각 연결은 'S' 또는 'K'로 시작하고 두자리 숫자 그리고 스크립트 이름이
뒤따릅니다
. /etc/rc?.d/에 'S'로 시작하는 스크립트는 런레벨 N에 들어서면 실행됩니다.
'K'로 시작하는 스크립트는 런레벨 N을 빠져나오면 실행됩니다.

그리고 'K'나 'S' 뒤의 두숫자는 스크립트의 실행순서를 나타냅니다.
작은 숫자를 먼저 실행합니다.

이상이 데비안의 기본 기동 과정과 런레벨 스크립트 기동 과정입니다.

위의 글을 보면 아시겠지만 /etc/rc.Boot 에 있는 스크립트들은 기동과정에서
실행이 됩니다.
하지만 /etc/init.d 에 위치시켜 update-rc.d 라는 명령으로 등록시켜 사용하는
방법은 기동과정이 끝나고 런레벨 실행 단계에서 실행이 됩니다.
이 차이는 보통은 그리 큰 문제가 되지를 않지만 어떠한 경우에는 이 순서의
차이로 인해서 스크립트가 원하는 방향으로 실행이 되지 않을 수 도 있습니다.
이 점을 참고 하시기를 바랍니다.

그럼 update-rc.d 명령으로 스크립트를 시작 또는 특정 실행계층에 포함시키는
방법을 알아 보도록 하겠습니다.
등록하기 위한 스크립트를 foo라고 가정 하겠습니다.
우선 foo라는 스크립트를 /etc/init.d/ 에 위치 시킵니다.
/etc/init.d/foo와 /etc/rc?.d 디렉토리 사이의 연결을 지정하려면 데비안의
update-rc.d명령을 적당한 인자와 함께 실행합니다.

예를 들어 foo 스크립트를 /etc/init.d/ 에 넣고 update-rc.d foo defaults 19로
설치해서 기동때 실행하게 할 수 있습니다.
'defaults' 인자는 2에서 5까지의 기본 실행계층을 나타냅니다.
'19' 인자는 foo 스크립트를 20 이나 그 이후 스크립트보다 먼저 호출되게
보장합니다.

그럼 다시 본론으로 들어가서 접속유지 스크립트를 부팅시 등록 시키는 방법을
설명하겠습니다.

레드햇 계열은 /etc/rc.d/rc.local이라는 파일에 부팅시 1회
실행시킬 명령을 적습니다
그런데 예전에 알짜를 사용할때 rc.local 파일에 보면 사용자가 등록하는
명령은 rc.local에 두는것보다는 rc.local.mine을 만들어서 여기다 따로
등록하는것을 권장하더군요...

 
by 중복이오 | 2006/06/29 10:05 | 리눅스 | 트랙백 | 덧글(0)
트랙백 주소 : http://excorp.egloos.com/tb/113024
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >