2010. 12. 29. 08:52

kill 명령어 시그널

(2) kill 
1) 설명: 프로세스에 특정한 signal을 보내는 명령이다. 보통 실행중인 프로세스에 종료 신호를
보낸다. 보통 중지시킬 수 없는 프로세스를 종료시킬때 많이 사용한다.
2) 사용법
kill [option] [-시그널번호 or -시그널이름] PID
=> kill 명령 뒤에 어떤 프로세스의 PID(Process ID)를 적어주면 그 프로세스에 종료시그널을
보내게 된다. 보통의 경우 종료시킬 수 있으며, 만약에 종료되지 않으면 9를 signal_number
에 써 줌으로써 강제로 종료시킬 수 있다.
kill [option] [-시그널번호 or -시그널이름] %작업번호
3) option
-l : 시그널의 종류를 나열한다. 시그널의 종류는 시그널 번호순서대로 나열한다.
4) signal_number와 이름
1 SIGHUP(HUP) : hang up의 약자로 프로세스를 재시작시키는 시그널이다.
2 SIGINT(INT) : 인터럽트. 실행을 중지시킨다. [CTRL] + [C] 를 눌렀을 때 보내지는 시그널
이다.
3 QUIT : 키보드 종료. 
9 SIGKILL(KILL) : 무조건 종료, 즉 강제 종료시키는 시그널이다.
15 SIGTERM(TERM) : Terminate의 약자로 가능한 정상 종료시키는 시그널로 kill 명령의 기본
시그널이다.
18 CONT : Continue. STOP등에 의해 정지된 프로세스를 다시 실행시킨다.
19 STOP : 무조건적, 즉각적 정지
20 TSTP : 실행 정지후 다시 실행을 계속하기 위하여 대기시키는 시그널이다. [CTRL] +[Z] 를 
눌렀을 때 보내지는 시그널이다.

5) 참고 
kill -l 이라고 써주면 signal_number에 보내줄 수 있는 시그널의 종류들을 보여주며, signal_
number에 숫자 대신에 직접 이름을 써 주어도 된다. man 을 참조하려면 man 7 signal 하면 된다.
6) 사용예
ㄱ. kill -l 
=> 시그널의 종류를 나열한다.
ㄴ. kill 724 
=> 724번 프로세스에 디폴트시그널인 15번 시그널을 보낸다. 
같은 명령으로 'kill -15 724', 'kill -TERM 724'등이 있다. 
ㄷ. kill -9 756 757 758 
=> pid가 756, 757,758인 프로세스를 중단한다. 'kill -KILL PID', 'kill -SIGKILL PID'
라고 명령내려도 된다.
ㄹ. kill -HUP 10118 
=> pid가 10118인 프로세스를 재시작한다. 'kill -1 10118'과 같다.
ㅁ. kill %2
=> 작업번호가 2인 프로세스를 종료시킨다.
7) 프로세스 종료시 유의점
프로세스를 종료시에는 [CTRL] +[C]나 기본시그널인 TERM 시그널(-15)로 정상적으로 종료를 
시도하는 것이 좋다. 그래도 프로세스가 종료가 안되면 KILL 시그널(-9)을 사용하면 된다.

(3) killall 
1) 설명: 같은 데몬의 여러 프로세스를 한번에 죽이는 경우에 사용한다. Killall은 프로세스이름
으로 프로세스를 종료시킨다.
2) 사용법
killall [option] 프로세스명
3) option
-HUP : 재시작한다. 
4) 사용예 
ㄱ. killall httpd 
=> Apache 웹서버 데몬을 모두 종료한다.
ㄴ. killall mysql
=> mysql 데몬을 모두 종료한다. 
ㄷ. killall -HUP xinetd 
=> xinetd 데몬을 다시 실행시킨다.