배쉬 맨 페이지 : kill <pid> vs kill -9 <pid>


25

내 매뉴얼 페이지에 차이점이 문서화되어 있지 않습니다

kill <pid>

kill -9 <pid>

이것들이 다른 일을하기 때문에 왜 kill맨 페이지 에 -9가 문서화되어 있지 않습니까? 나는 그것이 쉘 특정 일이라고 생각했기 때문에 bash 맨 페이지에서도 보았지만 운은 없었습니다.

보너스 질문 : -9는 무엇을합니까?

답변:


40

kill주어진 프로세스에 신호를 보냅니다. 는 -9보낼 신호를 알려줍니다.

다른 숫자는 다른 공통 신호에 해당합니다. SIGINT예를 들어, 2이므로 프로세스에 SIGINT신호 를 보내 려면 명령을 발행하십시오.

$ kill -2 <pid>

여기서 맨 페이지는 다음을 지정합니다.

kill의 기본 신호는 TERM입니다.

맨 페이지는 또한 보낼 수있는 신호 표를 제공합니다. 이 테이블에 따르면 TERMis 15이므로 모두 동일합니다.

kill <pid>
kill -15 <pid>
kill -TERM <pid>

통지 9가 KILL신호입니다.

   Name   Number  Action
   -----------------------
   ALRM      14   exit
   HUP        1   exit
   INT        2   exit
   KILL       9   exit  this signal may not be blocked
   PIPE      13   exit
   POLL           exit
   PROF           exit
   TERM      15   exit     [Default]
   USR1           exit
   USR2           exit
   VTALRM         exit
   STKFLT         exit  may not be implemented
   PWR            ignore    may exit on some systems
   WINCH          ignore
   CHLD           ignore
   URG            ignore
   TSTP           stop  may interact with the shell
   TTIN           stop  may interact with the shell
   TTOU           stop  may interact with the shell
   STOP           stop  this signal may not be blocked
   CONT           restart   continue if stopped, otherwise ignore
   ABRT       6   core
   FPE        8   core
   ILL        4   core
   QUIT       3   core
   SEGV      11   core
   TRAP       5   core
   SYS            core  may not be implemented
   EMT            core  may not be implemented
   BUS            core  core dump may fail

   XCPU           core  core dump may fail
   XFSZ           core  core dump may fail

8
기본 신호 ( kill <pid>)는 TERM입니다.
중화

9
숫자는 다른 유닉스 기반 시스템에서 항상 같지만 항상 같은 것은 아닙니다. 신호 이름을 사용하는 것이 좋습니다. 즉, kill -9 대신 kill -KILL을 사용하십시오.
mpez0

7
나는 것을 추가 할 수 KILLSTOP신호가 비 잡을 신호를 소위. 즉, TERM신호가 프로세스로 전송 되면 신호를 포착하여 수행해야하는 다양한 "종료"작업을 수행 할 수 있습니다. KILL신호는 즉시 처리를 정지한다.
Neo

5
기본 신호를 먼저 사용하는 것이 가장 좋으며 기본값이 작동하지 않으면 -9 만 사용하십시오. 그 이유는 -9를 잡아서 프로그램을 정리할 기회가 없기 때문입니다. 또한, 당신은 당신의 시스템의 신호에 대한 문서를 찾을 수man 7 signal
추후 공지가있을 때까지 일시 중지합니다.

7

기본 신호는 TERM입니다. 종료되는 프로그램이이를 포착하여 종료하기 전에 정리할 수 있습니다. 프로그램이 그렇게 작성되면 무시해도됩니다.

신호로 -9 또는 KILL을 지정하면 프로그램이이를 포착, 정리 또는 무시할 수 없습니다. 최후의 수단으로 만 사용해야합니다.

Bash에서 숫자 및 신호 이름 목록을 보려면 kill -l(letter ell)을 사용하십시오.


4

우분투 리눅스를 사용하고 있습니다.

강제 종료 명령은 기본적으로 신호를 보내 처리합니다. 일상적인 컴퓨팅 킬 명령에 대한 복잡한 행동 기대를 단순화하기 위해 다양한 옵션이 있습니다.

위에서 설명한대로 그 정의에 해당하는 모든 킬 번호 옵션이 있습니다.

몇 줄을 추가하고 싶습니다.

 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    

위에서 보았 듯이 Ubuntu Linux를 실행하면 얻을 수있는 모든 킬 옵션이 있습니다.

그러나 특정 킬 신호는 모든 * NIX 플레이버에서 공통입니다.

kill -9는 SIGKILL 옵션이며 커널은이 신호를 무시할 수 없습니다. 즉,이 -9 또는 SIGKILL 옵션을 준수하고 프로세스를 즉시 종료합니다. 이 프로세스는 응용 프로그램에서 처리 할 수 ​​없음을 기억하십시오.

반면에 kill -15는 SIGTERM 신호를 보내므로 프로세스가 종료되기 전에 완전히 종료 될 때까지 기다립니다. 이것이 기본 신호입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.