Search Results for 'init'

1 POSTS

  1. 2010.06.01 [스크랩] 시스템 shutdown 명령어

[스크랩] 시스템 shutdown 명령어

Posted 2010. 6. 1. 10:26


* 시스템 shutdown 명령어

 솔라리스에서는 시스템의 런 레벨을 변 경하는 다양한 명령어를 제공한다. 하지만 여러 명령어중 가장 많이 사용되며 안전한 명령어는 shutdown 명령어이다.

 

참고) 솔라리스 런 레벨(http://cafe.naver.com/secuacademy)

런레벨

설명

0

솔라리스가 전혀 가동하지 않는 레벨.

시스템 다운 (SPARC 에서는 Boot PROM단계 / 인텔 시스템에서는 BIOS상태)

* Boot PROM : 일반 PC의 BIOS에 해당하는 부분으로 Boot PROM의 가장 기본 기능은 시스템에 장착된 하드웨어를 점검하고 부팅 장치에서 솔라리스를 읽는 역할이다. Boot PROM이 실행되면 시스템의 기본적인 하드웨어인 CPU, 메모리 시스템 버스등의 이상유무를 점검 하며 기본적인 하드웨어에 이상이 없으면 시스템에 장착된 하드웨어를 초기화하여 시스템을 제어할 수 있는 상태로 전환한다.

 시스템에 장착된 목록을 만들고 그 하드웨어에 관한 기본적인 드라이버를 적재하며, Boot PROM 변수에서 정의된 부팅 장치에서 솔라리스 부트 프록램을 읽어서 메모리에 적재한 후 부트 프로그램에 제어권을 넘기면 Boot PROM의 역할은 끝난다.

1

관리상태

싱글유저(단일 사용자) 상태, 멀디유저 화일시스템이 언마운드 되고 데몬도정지

2

멀티유저(다중 사용자) 상태. 화일시스템이 마운트되고 정규 사용자 서비스가 시작 된다

3

솔 라리스의 기본 런 레벨

솔 라리스에서 제공하는 모든 서비스를 제공

NFS(Network File System)상태. 다중사용자가 네트웍을 통해 화일시스템을 서비스 받을 수 있다.

4

사용자 정의. 현재 거의 사용하지 않음

5

정지(halt) 및 전원 차단

6

기본수행단계로 리부팅

S,s

솔라리스에서 가장 기본적인 서비스만 제공되는 런 레벨

부팅시 런 레벨 S,s로 설정되어 작업 → 런 레벨 3 으로 설정됨

단일사용자(싱글유저) 상태. "root"사용자만이 시스템에 접근가능하며 최소한의 루트 파일시스템만 사용가능한 상태

시스템의 잘못된 설정 파일수정 / 파일시스템 복구 / 백업용도로 사용

 

  현재 사용중인 런 레벨은 현재 시스템에 로그인한 사용자 목록과 로그인에 관련된 정보를 출력해주는 who 명령어에 -r 옵션을 함께 사용하면 알 수 있다.(# who -r)

 

/sbin/init 명령어
 init 명령어는 솔라리스가 부팅할 때 가장 마지막 단계인 init 단계(/etc/inittab파일에 따라 init 프로그램의 행동이 결정되며, 부팅 단계 중 init 프로그램 실행 과정이 가장 많은 시간을 요하고 작업량도 가장 많다. init 과정에서는 현재 시스템에 필요한 파일시스템을 마운트하거나 서비스를 제공하는 프로세스를 생성한다)에서 실행되는 명령이다.

init 명령어가 실행되면 /etc/inittab 파일에 명시된 대로 시스템에 필요한 서비스를 제공하거나 시스템을 종료하기 위해 여러 스크립트를 실행한다. init 명령어는 시스템이 시작할 때뿐만 아니라 솔라리스가 동작 중에도 사용할 수있으며, 반드시 root 사용자 권한을 필요로 한다.

 init 명령어의 실행 형식은 다음과 같다.

# init 런 레벨(012356Ss)

 init 명령어 다음에 가고자 하는 런 레벨을 입력하면 해당하는 런 레벨로 즉시 변경한다. init 명령어는 런 레벨을 실행하기 위해서 /etc/inittab 파일에 명시된 대로 동작한다.

 참고로 위에서 알아본 런 레벨과 init 명령어를 이용해 종료 / 재부팅을 하려면 아래와 같이 조합해서 사용하면 된다.(http://blog.naver.com/schmeckcrono)

1) init 5 : 셧다운 후에 파워오프(썬장비에서는 가능, x86에서는 안됨)
2) init 6 : 셧다운 후에 리부팅
3) init 0 : 셧다운 후에 PROM Mode 진입

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

참고 : sync(Synchronizing Data)

 위 에서 사용한 init와 잠시후 살펴볼 shutdown, reboot(=init 6, 시스템 재시작) 명령과는 달리  halt(=init 0), poweroff(=init 5) 에서는  해당 명령을 수행하기전에 sync 명령어를 이용해  디스크에 아직 기록 되지 않는 메모리상의 데이터를 저장해 주어야 한다.

 다 중 사용자 환경이니 저장되지 않고 메모리 상에만 남는 데이터가 생기는데 이를 위해 sync 명령어를 이용하여 메모리 상에 존재하는 데이터를 디스크에 저장하게 된다. sync 명령은 한번이 아닌 여러번(3번 정도) 입력하는데 이유는 한번의 sync time에 기록되지 않는 누락된 데이터를 저장하기 위해 여러번 하는 것이다.

 예) # sync, sync, sync (, 혹은 ; 으로 구분해도 되고 sync를 따로 입력후 엔터)
      # halt

* init, shutdown, reboot 등의 명령어는 sync 명령을 자동으로 수행해 준다. 단, -n 옵션을 이용하면 sync 작업을 생략한다.

 

참고할 곳 : http://serings.tistory.com/71 
              
http://blog.naver.com/dalmagru?Redirect=Log&logNo=70002584442
               http://blog.naver.com/schmeckcrono?Redirect=Log&logNo=90015496136
---------------------------------------------------------------------

/usr/sbin/shutdown 명령어
shutdown 명령어는 시스템의 상태를 바꾸거나 시스템을 종료할때 가장 많이 사용하고 가장 안전한 명령어이다. shutdown 명령어는 init 명령어처럼 런 레벨을 변경하게 되면 /etc/inittab 파일에 명시된 대로 스크립트를 실행하고, root 사용자의 권한을 필요로 한다.

형식 shutdown [-g grace-period] [-i 0156Ss] [-y] [messages]

 -g : g 옵션 다음에 지연 시간을 초 단위로 명시할 수 있으며, -g옵션을 사용하지 않으면 60초 
       
동안 지연된다.
 -y : y 옵션을 사용하면 지연시간이 다 되었을때 런 레벨을 바꿀 것인지 확인하는 기능에
       무조건 y를 선택하게 된다.
 -i : i 다음에는 원하는 런 레벨을 입력한다. init 명령에서는 모든 런 레벨로 변경이 가능하지만
      shutdown 명령어는 0156Ss로만 변경가능하고, 2 혹은 3 레벨로는 변경이 불가능 하다.
      -i 옵션을 생략하면 런 레벨 S로 전환된다.
 messages : 메시지를 적으면 로그인된 사용자에게 메시지를 뿌려준다. 아무런 메시지 없이
                  시스템을 끄거나 재부팅 하면 아마도 굉장한 원망을 들을 것이다.
                   System shutdown for repair hardware와 같은 메시지라도 적는 것이 기본.

예) shutdown -y -g 600 -i 5 "System shutdown for repair hardware." 
   600초 후에 런 레벨 5(셧다운 후 파워 오프) 마지막에 자동으로 대답하고 뒤의
   메세지를 로그인한 모든 유저에게 뿌려주면서 빨리 나가라고 경고 한다.
   (http://blog.naver.com/schmeckcrono?Redirect=Log&logNo=90015496136)

/usr/ucb/shutdown 명령어
 솔라리스에는 shutdown 명령어가 두 개 있다. 두 shutdown 명령어 모두 기능은 유사하지만 /usr/sbin/shutdown 명령어는 System V 계열의 명령어로서 솔라리스 2.X 버전에 처음 도입되었고, /usr/ucb/shutdown 명령어는 BSD 계열의 shutdown 명령어로서 솔라리스 1.X 버전에도 존재한다.

 

형식 shutdown [-h | -p | -r] [+minutes | now] [messages]

 

 - h : h(halt) 옵션을 사용하면 Boot PROM 상태로 전환된다
 - p : p(power off) 옵션을 사용하면 시스템 전원을 끈다
 - r : r(reboot) 옵션을 사용하면 시스템을 재부팅 한다

 +minute : + 다음에 지연 시간을 분 단위로 입력 가능하다. 설정하지 않으면 기본은 5분 이다
 now : 지연시간 없이 바로 실행

 h, p, r 옵션중 아무것도 입력하지 않을 경우 -h 옵션이 기본으로 설정된다.

 

/usr/sbin/halt, /usr/sbin/poweroff, /usr/sbin/reboot

 - halt : 시스템을 Boot PROM 상태로 전환
 - poweroff : 시스템의 전원을 끔
 - reboot : 시스템을 재부팅

 

☆ init / shutdown / halt / poweroff /reboot 명령의 특징.

init / shutdown의 경우는 셧다운 과정에서 현재 실행중인 데몬들과 프로세스들을 종료하고 파일시스템도 정상적으로 언마운트 하는 과정(/etc/inittab 파일의 내용을 참조하여 rc0 script 실행)을 거치는데 halt, poweroff, reboot는 그런 과정을 거치지 않고 모든것이 강제 종료되어 시스템에 악영향을 끼칠 수 있다. 

 

 따라서 init 혹은 shutdown 명령을 이용하는 것이 좋다.

 

 참고로 reboot 명령어는 다른 명령어와 달리 특별한 기능이 있다. reboot 명령어를 실행할 때 특별한 형식에 따라 옵션을 명시하면 Boot PROM 상태의 boot 명령어에 아규먼트나 옵션을 전달할 수 있다. 이 기능을 사용하기 위해서는 reboot 명령어를 다음의 형식에 따라 입력해야 한다.

 

 reboot -- boot_options

 

 - 기호 다음에 옵션 혹은 아규먼트를  명시하면 그 내용이 그대로 Boot PROM 상태의 boot 명령어에 전달된다.

 

예) reboot -- -r

    하드웨어가 추가로 장착되거나 제거 되었을 때 -r 옵션을 사용하면, 장착된 
    하드웨어에 관련된 파일들을 갱신하여 재구성 한다.

     ( /reconfigure 파일을 만들어 부팅한 것과 동일한 기능을 제공한다. 즉 /devices
       디렉토리에 존재하는 물리적인 장치 파일과 /dev 디렉토리에 존재하는 논리적인 
       장치 파일을 모두 새롭게 생성하며 /etc/path_to_inst 파일의 내용도 새롭게 갱신
       한다.)

 

* 전체적인 내용들은 한빛 Solaris Bible을 참조 할 것.