| HOME / 정보공유 / AIX 명령어 모음

telinit
telinit telinit 또는 init 명령 목적 프로세스를 초기화하고 제어합니다. 구문
{ telinit | init } { 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | a | b | c | Q | q | S | s | M | m | N }
설명
init 명령은 프로세스를 초기화하고 제어합니다. 주요 역할은 /etc/inittab 파일에서 읽은 레코드를 기초로 프로세스를 시작하는 것입니다. init 명령은 /etc/inittab 파일을 읽고 사용자가 로그인할 수 있는 각 회선에 대한 getty 명령을 수행합니다. init 명령은 시스템이 요구하는 자치 프로세스를 제어합니다.
/usr/sbin/getty는 init 명령의 프로세스 처리 공정 작업지정 활동의 대부분을 구성하는 프로세스입니다. /usr/sbin/getty 프로세스는 각 터미널 회선을 시작합니다. init 명령이 작업지정(dispatch)하는 또 다른 프로세스는 디먼 및 쉘입니다.
init 명령에 링크된 telinit 명령은 init 명령의 조치를 지정합니다. telinit 명령은 한 문자의 인수를 취하여 init 명령이 해당 조치를 수행할 수 있도록 kill 서브루틴을 통하여 명령에 신호를 보냅니다.
telinit 명령은 특정 수행 레벨에서 시스템을 설정합니다. 수행 레벨은 선택된 프로세스 그룹만이 존재하도록 하는 소프트웨어 구성설정입니다. 시스템은 다음 수행 레벨 중 하나일 수 있습니다.
0-9 init 명령이 시스템을 수행 레벨 0-9 중 하나의 레벨로 놓도록 합니다. init 명령이 수행 레벨 0-9로의 변경을 요청할 경우에는, 현재 수행 레벨의 모든 프로세스 처리 공정을 종료(kill)시키고 새로운 수행 레벨과 관련된 모든 프로세스 처리 공정을 다시 시작합니다.
0-1 나중에 운영 시스템에서 사용하기 위한 예약된 수행 레벨입니다.
2 다중 사용자 환경에서 수행되는 모든 프로세스와 디먼을 포함합니다. 다중 사용자 환경에서는 /etc/inittab 파일이 설정되어 init 명령이 시스템 상의 각 터미널에 대해 프로세스 처리 공정을 작성합니다. 콘솔 장치 드라이버가 모든 수행 레벨에서 수행되도록 설정하면 콘솔만으로도 시스템을 조작할 수 있습니다.
3-9 사용자의 우선권에 따라 정의할 수 있습니다.
S,s,M,m init 명령에게 유지보수 모드로 들어가도록 지시합니다. 시스템이 그 밖의 다른 수행 레벨에서 유지보수 모드로 들어갈 때, 시스템 콘솔만이 터미널로 사용됩니다.
init 명령에 다음 인수들도 사용할 수 있습니다.
a,b,c init 명령에게 /etc/inittab 파일에서 수행 레벨 필드가 a, b, 또는 c인 레코드만 처리하도록 지정합니다. 이 세 가지의 인수, a, b 및 c는 참 수행 레벨이 아닙니다. init 명령이 전체 시스템이 수행 레벨 a, b 또는 c가 되도록 요청할 수 없다는 점에서 수행 레벨과 다릅니다.
init 명령이 수행 레벨 필드의 a, b 또는 c 값을 가지는 /etc/inittab 파일에서 레코드를 발견할 경우, 프로세스 처리 공정을 시작합니다. 그러나 현재 수행 레벨에 있는 어떠한 프로세스로 종료(kill)시키지 않습니다. 수행 레벨 필드의 값이 a, b 또는 c인 프로세스도 현재 시스템 수행 레벨로 이미 수행 중인 프로세스와 더불어 시작됩니다. 참 수행 레벨과 a, b, 또는 c의 다른 차이점은 a, b, 또는 c로 시작된 프로세스는 init 명령이 수행 레벨을 변경해도 정지되지 않는다는 것입니다. 다음 세 가지 방법으로 a, b 또는 c 프로세스를 정지시킬 수 있습니다.
Action 필드에 off라고 입력하십시오.
오브젝트들을 완전히 삭제합니다.
init 명령을 사용하여 유지보수 상태로 들어갑니다.
Q,q init 명령에게 /etc/inittab 파일을 다시 검토하도록 지시합니다.
N 프로세스의 재생성을 중지하라는 신호를 보냅니다.
시스템 설정을 하는 동안 루트 파일 시스템을 이미 초기 설정된 프로세스에 마운트하면 다음과 같은 이벤트가 발생합니다.
시작 프로세스의 최종 단계로 init 명령이 수행됩니다.
init 명령이 /etc/inittab 파일 읽기를 시도합니다.
/etc/inittab 파일이 존재할 경우, init 명령은 initdefault 항목을 /etc/inittab 파일에 위치시키려고 시도합니다.
initdefault 항목이 존재할 경우, init 명령은 초기 시스템 수행 레벨과 같이 지정된 수행 레벨을 사용합니다.
initdefault 항목이 존재하지 않을 경우, init 명령은 사용자가 시스템 콘솔(/dev/console)에서 수행 레벨을 입력하도록 요청합니다.
사용자가 S, s, M 또는 m 수행 레벨을 입력하면 init 명령이 유지보수 수행 레벨로 들어갑니다. 이런 수행 레벨만이 적절히 포맷된 /etc/inittab 파일을 필요로 하지 않는 수행 레벨입니다.
/etc/inittab 파일이 존재하지 않을 경우, init 명령은 기본적으로 유지보수 수행 레벨로 시스템에 위치합니다.
init 명령은 60초에 한 번씩 /etc/inittab 파일을 다시 읽습니다. init 명령이 마지막으로 /etc/inittab 파일을 읽은 이후에 그 파일이 변경되었을 경우, 시스템이 시작하는 동안 /etc/inittab 파일이 실행됩니다.
수행 레벨을 변경하도록 init 명령에 요청하면 init 명령은 /etc/inittab 파일을 읽어 어떤 프로세스가 새로운 수행 레벨이어야 하는지 확인합니다. 그런 후, 새로운 레벨로 수행하지 않아야 할 모든 프로세스는 취소하고 반대로 새 레벨로 수행해야 하는 프로세스는 시작합니다.
각 수행 레벨에 대해 init 명령이 수행한 프로세스는 /etc/inittab 파일에 정의되어 있습니다. 수행 레벨을 변경하려면, 루트 사용자가 init 명령에 링크되어 있는 telinit 명령을 수행해야 합니다. 사용자가 수행하는 init 명령은 시스템 시작 중에 시작된 원래 init 명령에 적절한 신호를 전송합니다. /etc/inittab 파일의 initdefault 항목에 대한 수행 레벨을 수정하여 디폴트 수행 레벨을 변경할 수 있습니다.
유지보수 수행 레벨에서, /dev/console 콘솔 터미널을 열면 읽기 및 쓰기가 가능합니다. root의 암호를 묻습니다. 루트 암호가 정확하게 인력되면 su 명령이 호출됩니다. 유지보수 수행 레벨에서 나가는 방법은 다음 두 가지입니다.
쉘이 종료되면, init 명령은 새로운 수행 레벨을 요청합니다.
또는
init (또는 telinit) 명령은 init 명령에게 신호를 보내어 시스템의 수행 레벨을 강제로 변경하게 할 수 있습니다.
시스템을 시작하는 동안 initdefault가 유지보수 수행 레벨인 경우, init 명령이 새로운 수행 레벨을 요구하는 데 실패하였다면, 터미널 콘솔 장치(/dev/console)가 실제 콘솔 이외의 장치로 전환되었기 때문일 수 있습니다. 이러한 일이 발생하고 /dev/console이 아닌 실제 콘솔에서 작업을 하려면, 실제 콘솔 장치에서 DEL(삭제) 키를 눌러서 init 명령을 사용하여 강제로 실제 콘솔로 전환할 수 있습니다.
init 명령이 사용자에게 새로운 수행 레벨의 입력을 요청하면 0-9 사이의 숫자 또는 문자 S, s, M 또는 m 중 하나를 입력하십시오. S, s, M 또는 m 중 하나를 입력하면 init 명령이 유지보수 모드에서 수행되며 이전에 실제 콘솔로 전환하는 제어가 있었으면 /dev/console 파일도 그 장치로 전환됩니다. init 명령은 이러한 내용의 메세지를 이전에 /dev/console 파일이 연결되어 있던 장치에 생성합니다.
0-9 수행 레벨을 입력하는 경우 init 명령이 해당 수행 레벨로 들어갑니다. 다른 값을 입력하면, init 명령은 이를 거부하고 올바르게 입력하도록 다시 프롬프트합니다. 처음으로 init 명령이 유지보수가 아닌 다른 수행 레벨로 들어가는 경우, /etc/inittab 파일에서 boot 또는 bootwait 키워드가 있는 항목을 탐색합니다. init 명령이 이러한 키워드를 찾았으면, 수행 레벨이 해당 항목의 수행 레벨과 일치하면 적절한 타스크를 수행합니다. 예를 들어 init 명령이 boot 키워드를 찾으면, 시스템을 부트합니다. 파일시스템 검사 및 마운트와 같은 시스템의 특수한 초기화는 사용자가 시스템을 사용하도록 허용되기 전에 이루어집니다. init 명령은 /etc/inittab 파일을 읽어 해당 레벨에 맞는 모든 항목을 찾습니다. 그런 다음 /etc/inittab 파일을 정상적으로 처리합니다.
수행 레벨 2는 디폴트 값으로 다중 사용자 환경에서 수행되는 모든 터미널 프로세스 및 디먼을 포함하도록 정의되어 있습니다. 다중 사용자 환경에서는 /etc/inittab 파일이 설정되어 init 명령이 시스템 상의 각 터미널에 대해 프로세스 처리 공정을 작성합니다.
터미널 프로세스의 경우, 쉘은 EOF를 입력하거나 연결이 차단되면 종료됩니다. init 명령이 프로세스가 종료되었다는 신호를 수신하면, 종료되었다는 사실과 그 원인을 /etc/utmp 파일 및 /var/adm/wtmp 파일에 기록합니다. /var/adm/wtmp 파일에는 시작된 프로세스에 대한 내역이 보관됩니다.
/etc/inittab 파일의 각 프로세스를 시작하려면, init 명령은 하위(descendant) 프로세스 중 하나가 정지되거나, 전원 실패 신호인 SIGPWR가 발생하거나, init 명령에게 시스템의 수행 레벨을 변경하라고 init 또는 telinit 명령이 신호를 전송할 때까지 대기합니다. 위의 세 가지 조건 중 하나가 발생하면, init 명령은 /etc/inittab 파일을 다시 조사합니다. 새로운 항목이 /etc/inittab 파일에 추가되는 경우에도, init 명령은 아직 세 가지 조건 중 하나가 발생하기를 기다립니다. 즉시 수행되게 하려면 telinit -q 명령을 수행하여 /etc/inittab 파일을 다시 읽도록 하십시오.
init 명령이 /etc/inittab 파일의 한 항목을 지속적으로 수행 중임을 알게되면(225초당 6회 이상), 항목 명령 문자열에 오류가 있다고 가정합니다. 그런 다음 오류 메세지를 콘솔에 인쇄하고 오류를 시스템 오류 로그에 기록합니다. 메세지를 전송한 후, 그 항목을 60초동안 수행하지 않습니다. 오류가 계속 발생하면 그 항목을 240초당 5회씩만 재생성합니다. init 명령은 명령이 간격 동안 다섯 번을 응답하지 않거나 사용자로부터 신호를 수신할 때까지 오류가 발생했다고 계속해서 간주합니다. init 명령은 오류의 첫번째 발생에 대해서만 기록합니다.
init 명령이 수행 레벨을 변경하라는 요청을 telinit 명령으로부터 받으면 init 명령은 SIGTERM 신호를 현재 수행 레벨로 정의되지 않은 모든 프로세스에 보냅니다. init 명령은 SIGKILL 신호와 함께 이 프로세스 처리 공정을 정지시키기 전에 20초간 대기합니다.
init 명령이 유지보수 모드가 아닌 경우 SIGPWR 신호를 받았다면, /etc/inittab 파일에서 특수한 전원 장애 항목을 스캔합니다. init 명령은 다른 처리를 실행하기 전에(수행 레벨이 허용하는 경우) 이러한 항목과 관련된 타스트를 호출합니다. 이 방법으로 init 명령은 시스템이 전원 장애를 겪게 될 때마다 원상복구 및 레코딩 기능을 수행할 수 있습니다. 이러한 전원 장애 항목은 먼저 초기화되어야 하는 장치를 사용해서는 안됨을 기억하는 것이 중요합니다.
환경
init 명령은 시스템 상의 모든 프로세스의 궁극적인 조상이므로, 시스템 상의 다른 모든 프로세스가 init 명령의 환경 변수를 상속합니다. 초기화의 일부로서, init 명령은 /etc/environment 파일을 읽고, 이 파일 내의 지정 값을 모든 서브프로세스로 전달된 환경에 복사합니다. init 서브프로세스가 로그인 세션 내에서 수행되지 않으므로, init으로부터의 파일 모드 생성 마스크 설정을 상속하지 않습니다. 이러한 프로세스는 필요한 값으로 파일 모드 생성 마스크를 설정할 수 있습니다. /etc/inittab 파일의 init에 의해 실행되는 명령은 /etc/security/limits에서 제공되는 디폴트 값을 사용하지 않고 init의 ulimit 값을 사용합니다. 결과는 명령행에서 정상적으로 실행되는 명령이 init 호출시 올바르게 실행하지 않을 수도 있다는 것입니다. 고유의 ulimit 요구조건을 가지는 명령은 필요에 따라 ulimit 값을 설정하기 위한 특정 조치를 포함해야 합니다.
예제
init 명령을 요청하여 /etc/inittab 파일을 재검사하려면, 다음을 입력하십시오.
telinit q
init 명령을 요청하여 유지보수 모드를 입력하려면, 다음을 입력하십시오.
telinit s
파일
/etc/inittab init 명령 제어 파일을 지정합니다.
/etc/utmp 로그인한 사용자 기록을 지정합니다.
/var/adm/wtmp 로그인 사용통계(accounting) 파일을 지정합니다.
/sbin/rc.boot 사전 초기화 명령 파일을 지정합니다.
/etc/rc 초기화 명령 파일을 지정합니다.
/etc/environment 시스템 환경 변수를 지정합니다.
/dev/console 콘솔 장치 드라이버를 지정합니다.
관련 정보
chitab 명령, lsitab 명령, mkitab 명령, rmitab 명령, getty 명령, rc 명령.
inittab 파일, rc.boot 파일.
reboot 서브루틴, umask 서브루틴, ulimit 서브루틴, kill 서브루틴.