1. 런레벨 이해하기
리눅스의 machine state는 총 7개로 이루어져있다. 이는 리눅스의 시스템 가동 상태에 따라 달라지는데

이를 런레벨이라고 한다. 우리가 서비스를 등록할때 어떤 런레벨에서 서비스를 자동 실행할 것인지를

결정하게 되기 때문에 간단히 런레벨에 대해 알아보도록 하겠다.

런레벨의 정의는 /etc/inittab에 주석으로 설명이 잘되어 있다.

# vi /etc/inittab

....
# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this) 종료모드
#   1 - Single user mode 단일 사용자 모드
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking) 다중 사용자 텍스트 모드
#   하지만 NFS를 쓰지 않는다.
#   3 - Full multiuser mode 다중 사용자 텍스트 모드
#   4 - unused 사용하지 않는다.
#   5 - X11 다중사용자 X windows 모드
#   6 - reboot (Do NOT set initdefault to this) 재가동 모드
#
id:5:initdefault: 

맨아래 설정은 부팅시 리눅스 시스템의 가동 방식을 정한다. 5번은 윈도우 부팅시 X windows 시스템에

서 로그인하도록 하는 방식이다. 일반 텍스트 모드는 3번을 지정하면 된다.

4번은 쓰지 않는 것이라기 보다는 사용자가 스스로 서비스를 구성할 수 있는 사용자 정의 런레벨이라

할 수 있다. 나머지는 리눅스 시스템에서 사용하는 런레벨이다.

2. chkconfig로 서비스 설정하기
chkconfig는 쉽게 서비스를 등록하거나 삭제, 혹은 특정 런레벨에서 서비스를 실행시키는 설정을 가능

하게 합니다. man page를 보면 자세한 설명이 나온다.

일단 새로운 서비스를 등록하기 전에 사전 작업이 필요하다.

1) /etc/rc.d/init.d라는 디렉토리에 실행시킬 실행 스크립트를 넣어줘야 한다.

 - 이 디렉토리는 시스템 부팅시 초기화 과정 에서 실행 될 서비스들의 실행 스크립트가 모여있는 디렉

토리이다. 그 rc.d 하위의  rc.0, rc.1, rc.2 디렉토리는 각 런레벨에 따라 실행될 스크립트들이 init.d에 있

는 스크립트 파일의 링크들을 가지고 있다.

그런 다음에 해당 스크립트에 실행 priority, 중지 priority를 설정하는 엔트리를 넣어주고,

chkconfig, description는 필수적으로 입력해야 서비스에 등록된다. 그외에 엔트리들은 옵션사항이다.

# vi /etc/rc.d/init.d/sendmail
#!/bin/bash
#
# sendmail      This shell script takes care of starting and stopping
#               sendmail.
#
# chkconfig: 2345 80 30
# description: Sendmail is a Mail Transport Agent, which is the program \
#              that moves mail from one machine to another.
# processname: sendmail
# config: /etc/mail/sendmail.cf
# pidfile: /var/run/sendmail.pid
....

chkconfig:<space>run-level<sapce>시작 우선순위<space>종료 우선순위
run-level은 실행될 수 있는 런레벨을 지정한다. 위에서 2345는 레벨 2, 3, 4, 5라면 이 서비스는 시작된다
는 의미가 된다.  런레벨을 -로 입력하면 어떤 레벨에서든지 시작하지 않겠다는 뜻이다. 즉, 부팅시 자
동 시작을 안하겠다는 것이다.

2) service 등록
# chkconfig --add <service name>
service name은 init.d에 있는 스크립트의 파일명이 된다.

# chkconfig --add sendmail
sendmail 서비스를 등록한다.
add할 경우 chkconfig 엔트리에 내용대로 런레벨의 on/off가 적용된다.

3) service on/off/reset
해당 서비스를 on/off할 것인 지를 정한다.
만일,
# chkconfig sendmail off
라고 하면, on 되어 있는 모든 런레벨을 off해버린다.

# chkconfig sendmail on
엔트리의 내용대로 런레벨의 on이 되어 진다.

# chkconfig --level 2345 sendmail on
위의 명령어는 런레벨 2,3,4,5에서 sendmail 서비스를 시작하겠다는 뜻이다.

# chkconfig sendmail reset
reset은 on/off 설정을 원래대로 돌리는 것이다. 현재 sendmail이 2,3,4,5 레벨에서 실행하게 되어 있지만,
이후에 2,3을 off시켰다고 하자. 그런다음 reset을 하면 다시 2,3이 on으로 설정된다.

4) 서비스 삭제
# chkconfig --del sendmail
sendmail서비스를 삭제한다.

4) 서비스 리스트 보기
# chkconfig --list
이것은 모든 서비스 리스트를 보여주는 것이다.

# chkconfig --list sendmail
list중에 sendmail만 보여준다.