본문 바로가기

01. operation/i. Theory

Linux 일반 (system shutdown, runlevel)

컴퓨터는 파워스위치만 켜면 켜집니다..
끌때는 그냥 파워스위치만 누르면 꺼집니다...정말 편리하지만, ext2혹은 ext3와 같은경우는 disk에 곧장 write를 하지 않고 일종의 buffer(혹은 cache)에 넣어두고 이 buffer에서 disk에 실질적으로 write를 하게 되어집니다.
그렇다 보니 급작스러운 정전, 혹은 예기치못한 사고가 발생할수 있습니다..
그래서 shutdown작업전에는 항상 sync명령을 내려 buffers에 있는 내용을 모두 disk write를 한 후 shut가 되어지는것이 정석입니다.

poweroff 명령어>
shutdown
  -k : 실제로 종료하지는 않고 사용자에게 경고 메세지를 뿌립니다.
  -r : reboot                 (==reboot 명령어와 동일합니다)
  -h : halt (종료)           (==halt와 동일합니다.)
  -f : fsck를 실행하지 않습니다.
  -c : 종료명령 취소
  time : 몇 분(!)후 시스템을 종료할것인지 ...

shutdown 명령어 외에도 reboot, halt, poweroff과 같은 명령어도 있으니 이 부분은 man페이지를 참조하시면 충분히 이해가 가능할것이라고 생각합니다.

리눅스는 최초 start단계에서 몇가지의 단계로 나누어 집니다...
single모드, 네트워크를 지원하지 않는 CLI모드, 네트워크를 지원하는 CLI모드, GUI를 지원하는 모드...
일반적으로 이 단계는 runlevel이라고 불리며 이 runlevel은 init와 대응합니다. (1:1 매칭)
runlevel 0 (init 0) : poweroff (==halt, shutdown -h)
runlevel 1 (init 1) : 싱글모드
runlevel 2 (init 2) : NFS를 지원하지 않는 멀티유저모드
runlevel 3 (init 3) : NFS지원하는 멀티유저모드
runlevel 4 (init 4) : 사용하지 않는 runlevel
runlevel 5 (init 5) : GUI모드 (xwindows)
runlevel 6 (init 6) : reboot, shutdown -r

runlevel 1과 같은경우는 superuser mode로써 작업을 할때 종종 사용이 되어질것입니다. (disk가 풀찼을경우나, 혹은 패스워드 분실과 같은 이유로...)