JooTC
linux-logo-202009-grad5

리눅스 kill, killall 명령어 – 특정 프로세스 종료하기

리눅스 명령어 – kill, killall

리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는 작업이 있거나 더 이상 응답이 없는 프로그램을 강제 종료할 때 주로 사용합니다.

kill 명령어와 함께 사용되는 인자값으로는 종료할 프로세스의 ID값(PID라고 합니다.)과 종료 명령을 위한 신호 코드가 필요합니다. 이를 시그널(Signal)이라고 합니다. 인자값에 프로세스 이름을 입력해도 kill이 수행되지 않으므로 이름 대신 PID를 입력해야 합니다. (단, 후술할 killall 명령어는 PID 대신 프로세스 이름을 입력합니다.)

PID를 찾는 방법은 현재 실행 중인 프로세스 목록을 확인하는 ps 명령어와 출력값에서 검색을 수행하는 grep 명령어를 조합하여 종료할 프로세스를 검색하는 방법이 있습니다.

$ ps -aef | grep sshd
user        1452    1325  0 17:22 ?        00:00:00 sshd: user@pts/0

위 예시에서 sshd 프로세스의 PID 번호는 두번째 값인 1452입니다.

사용 방법

프로세스의 PID값을 알아내었다면 다음과 같이 kill 명령어를 사용할 수 있습니다.

$ kill -9 1452

만약 현재 사용자가 아닌 다른 사용자 또는 root 사용자로 열린 프로세스나 시스템 프로세스를 강제 종료하려고 하면 실패할 것입니다. 다른 사용자의 프로세스를 강제로 종료하려면 관련 권한이 필요할 수 있습니다.

위 예시에서 -9()로 시그널 값을 지정하였습니다. 만약 인자값에 시그널을 별도로 지정하지 않으면 기본 시그널 값은 -15(SIGTERM)이 됩니다. SIGTERM은 실행을 중단하기 위해 프로그램에 요청하는 코드입니다. 하지만 프로그램의 응답이 없어 강제 종료를 원하는 경우에는 이 시그널 대신 -9(SIGKILL)을 사용해야 합니다.

프로그램에게 종료 상태를 올바르게 알리기 위해서나 시스템 관리에 혼란을 주지 않으려면 시그널을 생략하지 않는 것이 좋습니다. 만약 SIGKILL 시그널을 보내려면 아래 방법 중 하나로 시그널을 보낼 수 있습니다.

  • kill -9 [pid]
  • kill -SIGKILL [pid]
  • kill --signal 9 [pid]
  • kill --signal SIGKILL [pid]
  • kill -s 9 [pid]
  • kill -s SIGKILL [pid]

kill 명령어에 -l 옵션을 사용하면 전체 시그널(Signal) 목록을 확인할 수 있습니다.

$ 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

리눅스 killall 명령어

프로세스 이름을 알고 있다면 PID 대신 프로세스 이름으로 프로그램을 종료할 수도 있습니다. 이럴 때는 killall 명령어를 사용해야 합니다.

이 명령어는 시스템에 기본으로 설치되지 않았을 수 있습니다. 일부 리눅스 배포판에서는 killall을 설치해야 할 수 있습니다.

killall에는 추가적인 옵션이 많지만 kill과 비슷한 옵션으로 구성되어 있습니다. 아래 예시는 vim 프로그램을 모두 종료하는 명령어입니다.

$ killall vim

마찬가지로 -s, --signal 옵션을 사용하여 강제 종료 명령을 보낼 수 있습니다.

$ killall --signal SIGKILL vim

이외에도 POSIX 정규표현식을 사용하여 정규식에 매칭되는 이름을 모두 종료시킬 수 있습니다. 이 때는 -r 또는 --regexp 옵션을 사용합니다.

구독
알림
guest

0 Comments
Inline Feedbacks
모든 댓글 보기
0
이 포스트에 대한 의견을 남겨주세요!x