Phantom

시스템 종료 과정 본문

프로그래밍에 대한 정보들

시스템 종료 과정

Ph4nt0m_ 2013. 5. 2. 17:11
반응형

오늘 포스팅할 내용은 리눅스 시스템의 종료 과정을 하겠습니다. 리눅스 시스템을 종료 할 때는 종료 명령을 사용하지 않고 전원을 끄면 안됩니다. 다른 시스템들도 마찬가지겠지만 그냥 전원을 끄게되면 데이터가 손상되거나 깨질 수 있고 OS파일도 깨질 수 있으며 하드디스크 등등이 손상이 됩니다. 무엇보다도 작동 중인 프로세스에 시스템 종료 신호를 전달하고 현재 작동 중인 프로그램이 중지되도록 하지 않으면, 예상치 못한 시스템의 문제를 발생시킬 수 있기 때문입니다. 리눅스에서의 시스템을 종료시키는 방법은 3가지 정도가 있는데요.

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

1. Shutdown

먼저 shutdown 이라는 것은 사용자들에게 시스템 종료에 대처할 수 있도록 시간적인 여유와 메시지를 전달하는 기능을 가진 명령어입니다. 이 명령어는 reboot이나 halt등에 비해 다양한 시스템 종료 방법을 제공하며, 오직 root만이 실행할 수 있습니다.


shutdown 명령이 실행된 이후의 시스템 종료 절차는 다음과 같습니다.

  • shutdown 하기 전에 sync 작업을 합니다.
  • 접속해 있는 사용자들에게 시스템이 종료된다는 메시지를 전달합니다.
  • 새로운 사용자의 로그인을 금지합니다.
  • 지정된 시간 내에 종료되지 않은 프로세스를 강제 종료합니다.
  • 지정된 시간 내에 로그아웃하지 않은 사용자를 강제 종료합니다.
  • 메모리에 남아있는 데이터를 디스크에 저장합니다.
  • 시스템 종료와 관련된 정보를 시스템 로그 파일에 기록합니다
  • 마운트 되어 있는 디바이스들을 언마운트합니다.
  • 시스템을 종료합니다.


shutdown의 사용법은 다음과 같습니다.


/sbin/shutdown [-krhfc][-t sec] time [경고메시지]


shutdown 에 사용되는 옵션을 설명하겠습니다.


-t sec : 다른 Runlevel로 바뀌기 전에 경고를 내보내는 프로세스와 kill 시그너 사이의 기다리는 시(단위/초)

-k : 시스템에 접속된 모든 사용자에게 경고 메시지만 전달

-r : shutdown 후 재부팅

-h : shutdown 후 시스템 정지

-f : 재부팅 과정에서 fsck(File System Check)를 실행하지 않음

-c : 실행중인 shutdown 취소

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

2. halt

halt 명령어는 아직 정해지지 않은 디스크의 운영 상태를 완료시키고 /var/log/wtmp에 로그인과 로그아웃에 관한 내용을 저장하며, 커널에 재부트 할지, 시스템을 종료할지를 알려 시스템을 안전하게 종료합니다. "shutdown -h now"와 같은 명렁어입니다.

halt명령어는 /sbin/halt에 있습니다.

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

ctrl + alt + delete

이 키는 /etc/inittab 파일 가운데 다음의 항목을 추가해주면, 이 키로 재부팅이 가능합니다.


ca::ctrlaltdel:/sbin/shutdown -t 3 -r now


이 키는 reboot명령을 입력한 것과 같은 결과를 보여줍니다. 그러나 일반 사용자에게 이 명령의 실행 권한을 부여해 준다면 망합니다...망해요 ㄷ 함부로 시스템을 재부트하여 커다란 손해를 보게될것이옵니다.....

그래서 shutdown명령어를 -a옵션과 함께 사용하며, /etc/inittab 파일 안에 정의해야 합니다.


ca::ctrlaltdel:/sbin/shutdown -t 3 -ra now


-a 옵션에 의해 어떤 사용자가 콘솔로 로그인하여 이 키를 입력하면 /etc/shutdown.allow 파일을 검사하게 됩니다. 이 파일에는 shutdown이 가능한 사용자들의 ID가 들어 있어, 이 중 하나의 사용자 혹은 root가 아니라면, 이 메시지와 함께 shutdown 이 진행되지 않게 됩니다.

shutdown: no authorized users logged in

이렇게 하면 다른 사용자들이 시스템을 끄는것을 방지 할 수 있습니다.

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

4. init
init을 이용하여 시스템을 종료 또는 재부팅 할 수 있습니다.

init 0 (시스템 종료)
init 6 (재부팅)

그러나, init은 여러 명의 사용자가 접속했을 때, 사용하는것은 바람직하지 않을 수도 있습니다.

반응형
Comments