강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

리눅스마스터1급: 프로세스들에 인터럽트 시그널 보내는 kill

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 프로세스들에 인터럽트 시그널 보내는 kill





 

kill



프로세스의 종료는 앞의 내용과 같이 프로세스가 포그라운드에 있는 경우에는 <Ctrl+C>로 종료가 가능하지만 백그라운드에 있는 경우에는 kill 또는 killall 명령을 사용해야 한다.

 

 

 

그리고 이 명령어들은 해당 콘솔에서 실행된 프로세스뿐만 아니라 현재 실행된 모든 프로세스를 제어할 수 있다.

 

 

 

수퍼 유저는 모든 프로세스에 대해 kill 명령어를 사용할 수 있으나 일반 사용자들은 자기가 실행시킨 프로세스에 대해서만 kill 명령어를 사용할 수 있다.

 

 

 

1) 개요

 

이 명령을 사용하는 가장 간단한 방법은 kill 뒤에 프로세스 아이디(PID)를 적는 것이다.

 

 

 

그리고 필요에 따라 kill 뒤에 옵션을 사용하여 시그널을 지정할 수 있다.

 

 

 

 

 

 

 

 

 

kill [-s 시그널|-p] [-a] [--] PID ...

kill l [시그널]

 

 

 

 

 

 

 

2) 옵션

 

 

kill의 옵션은 다음과 같다.

 

 

 

 

 

옵션

의미

-s

특별히 보낼 시그널을 지정한다.

 

 

 

여기에는 시그널 이름이나 번호가 온다.

 

 

 

 

-l

 

 

시그널로 사용할 수 있는 시그널 이름들을 보여준다.

 

-a

 

 

프로세스 IDpid로 변환할 때, 다른 uid를 갖는 프로세스도 변환시킬 수 있도록 허용한다.

 

 

-p

 

 

프로세스 ID를 지정한 경우, 그 프로세스에 시그널을 보내지 않고 그 프로세스의 이름만 보여준다.

 

 

 

 

 

3) 설명

 

 

kill 명령은 지정한 프로세스에 특정한 시그널(signal)을 보내는 명령어이다.

 

 

 

, 특정 프로세스에 실행종료시그널, 재시작시그널 등 명령어의 의미에서도 알 수 있듯이 주로 프로세스를 종료하는 용도로 사용되는 명령어이다.

 

 

 

지정한 시그널이 없으면 TERM 시그널을 보내는데, 이 시그널은 프로세스를 종료시킬 것이다.

 

 

 

 

다음과 같이 l 옵션을 사용하면 kill 명령어에서 사용 가능한 모든 시그널들을 보여 준다.

 

 

[root@RockyLinux01 ~]# kill -l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

[root@RockyLinux01 ~]#

 

 

 

 

 

 

 

시그널은 시그널의 번호, 시그널 이름 및 시그널로 각각 보낼 수 있는데, 예를 들어 강제로 실행중인 프로그램을 종료시킬 때에는 옵션으로 9, -SIGKILL, -KILL 등을 사용하면 된다.

 

 

 

아래는 자주 사용되는 시그널의 의미들이다.

 

 

 

 

 

번호

시그널 이름

시그널

의미

1

SIGHUP

HUP

hangup. 로그아웃하거나 접속을 끊을 때 발생하는 시그널로서, 특정의 실행 중인 프로그램이 이용하는 설정 파일을 변경시키고 변화된 내용을 적용할 때 이용된다.

2

SIGINT

INT

interrupt. 현재 작동중인 프로그램의 동작을 멈출 때 사용한다.

 

사용자가 터미널에서 종료키(quit)를 누를 때 커널에 의해 보내지는데 일반적인 값은 <ctrl + c>이다.

3

SIGQUIT

QUIT

SIGINT와 마찬가지로 사용자가 터미널에서 종료키(quit)를 누를 때 커널에 의해 보내지는데 일반적인 값은 <ctrl + \>이다.

9

SIGKILL

KILL

무조건 해당 실행중인 프로그램을 중지시킨다.

 

이 시그널 역시 많이 사용되는데, 실행중인 프로그램을 무조건 끝내고 싶을 때 이 시그널을 보내면 바로 종료한다.

11

SIGSEGV

SEGV

segmentation violation. 메모리 액세스가 잘못 되었을 때 발생한다.

 

15

SIGTERM

TERM

실행중인 프로그램에 정의되어 있는 정상적인 종료방법으로 프로그램을 끝내게 한다.

 

kill 명령에서 시그널을 특별히 지정하지 않으면 이 시그널을 이용하여 프로그램을 끝낸다.

18

SIGCONT

CONT

중단되었던 프로세스를 재개한다.

 

 

 

 

19

SIGSTOP

STOP

프로세스를 중단한다.

 

 

 

 

20

SIGTSTP

TSTP

터미널에서의 중단 시그널이다.

 

 

 

 

 

 

다음과 같이 kill 명령을 사용하여 firefoxgnome-calculator 프로그램의 프로세스를 종료하도록 하자.

 

 

 

 

 

# jobs -l

[1]+ 5377 Stopped firefox

[2]- 5398 Running gnome-calculator &

# kill 5398

[2] 종료됨 gnome-calculator

# kill -9 5377

 

 

 

 

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,039 명
  • 현재 강좌수 :  35,848 개
  • 현재 접속자 :  91 명