유닉스에서 kill -9 명령에서 9 번을 사용하는 이유는 무엇입니까? [닫은]


101

나는 그것이 주제에서 벗어난 것을 이해하고, 온라인에서 어디서도 찾을 수 없었으며 커뮤니티의 프로그래밍 전문가가 이것을 알 수 있다고 생각했습니다.
나는 보통 사용

kill -9 pid

직업을 죽이려고. 나는 항상 9의 기원이 궁금했다. 온라인에서 찾아 봤는데

"9는 포착 할 수 없거나 무시할 수없는 KILL 신호를 의미합니다. 즉, 프로세스 (일부 실행중인 응용 프로그램)가 즉시 종료되도록 신호를 보냅니다."(출처 : http://wiki.answers.com/Q/What_does_kill_-9_do_in_unix_in_its_entirety )

하지만 왜 9일까요? 다른 숫자는 어떻습니까? 역사적인 의미가 있습니까 아니면 유닉스 아키텍처 때문입니까?


6
나는이 질문이 더 superuser.com에 속한다는 것을 생각
라팔 Rawicki

답변:


89

다른 신호 목록은 Unix 신호에 대한 위키 백과 문서를 참조하십시오 . SIGKILL이 우연히 숫자 9를 얻었습니다.

니모닉을 숫자로 사용할 수도 있습니다.

kill -SIGKILL pid

6
예전에는 (내가 4.xBSD 정도를 의미하는) 셸 명령에 니모닉을 사용할 수 없었기 때문에 숫자 9가 많은 오래된 더스티 데크 셸 스크립트에 기록되었습니다.
zwol 2010 년


50

여기에 더 나은 대답은 다음과 같습니다.

mike@sleepycat:~☺  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    

9의 "의미"에 관해서는 ... 아마 없을 것입니다. The Linux Programming Interface (p 388) 에 따르면 :

각 신호는 1부터 순차적으로 시작하는 고유 한 (작은) 정수로 정의됩니다. 이러한 정수는 SIGxxxx 형식의 기호 이름으로 정의됩니다. 이후 각각의 신호에 사용되는 실제 숫자는 구현마다 다를 항상 프로그램에서 사용하는이 상징적 인 이름이다.


32

먼저 유닉스 계열 시스템의 시그널 이 무엇인지 알아야 합니다 (몇 분 정도 소요됩니다).

신호 는 중요한 이벤트가 발생했음을 나타 내기 위해 (실행중인) 프로그램에 전송되는 소프트웨어 인터럽트입니다.

이벤트는 사용자 요청에서 잘못된 메모리 액세스 오류까지 다양합니다. 인터럽트 신호와 같은 일부 신호는 사용자가 일반적인 제어 흐름에없는 작업을 프로그램에 요청했음을 나타냅니다.

사용할 수있는 시그널에는 여러 유형이 있습니다. 사용 가능한 / 가능한 시그널의 전체 목록을 얻으려면 " $ kill -l "명령을 사용하십시오. 여기에 이미지 설명 입력

위의 출력에서 ​​각 신호에는 ' 신호 번호 '(예 : 1, 2, 3) 및 ' 신호 이름 '(예 : SIGUP, SIGINT, SIGQUIT)이 연결되어 있음이 명확하게 표시 됩니다. 각각의 모든 Signal이 수행하는 작업에 대해 자세히 알아 보려면이 링크를 방문 하십시오. .

마지막으로 " kill -9 명령 에서 9 번을 사용하는 이유"에 대한 질문이 있습니다 .

프로그램이나 스크립트에 신호를 전달하는 방법에는 여러 가지가 있습니다. 신호를 보내는 데 일반적으로 사용되는 방법 중 하나는 kill 명령 을 사용하는 것 입니다. 기본 구문은 다음과 같습니다.

$ kill -signal pid

여기서 signal은 신호의 번호 또는 이름 과 그 뒤에 신호가 전송 될 프로세스 ID (pid)입니다.

예를 들어 --SIGKILL (또는 -9 ) 신호는 프로세스를 즉시 종료합니다.

$ kill -SIGKILL 1001

$ kill -9 1001

두 명령은 모두 동일한 것입니다. 즉 위에서는 '신호 이름'을 사용했고 나중에는 '신호 번호'를 사용했습니다.

평결 : 사람은 kill 명령에 '신호 이름'또는 '신호 번호'를 사용할지 여부를 선택할 수 있습니다 .


19

비틀즈의 "Revoulution 9"에 대한 언급입니다. 사운드 클립과 발견 된 소음의 모음.이 녹음에는 John Lennon이 "번호 9, 번호 9 ..."를 반복해서 반복하는 것이 특징입니다. 또한이 노래는 1969 년에 거꾸로 재생할 때 John이 "나를 켜줘, 죽은 사람 ..."

따라서 아홉 번째 신호는 가장 치명적인 킬 신호가 될 예정이었습니다.


17
당신이 이것을 당신의 엉덩이에서 꺼내고 있는지, 아니면 그것이 사실 일 가능성이 있는지 정말 말할 수 없습니다.
Jonathon Reinhart

그 주제의 끝은 정말 대단합니다. 특히 내 앞에 두 개의 댓글이 있습니다. 또한 kill과 사용할 시퀀스에 대한 기사를 우연히 발견했습니다. pthree.org/2012/08/14/appropriate-use-of-kill-9-pid
Gull_Code

나는 너무 많이 :) ...이 사실이되고 싶어
nafas

9 번이라고 말하는 사람은 레논이 아닙니다. 나는 이야기의 나머지 부분에도 진실이 많이 있다고 생각하지만 (즉, 아무도) 아는 사람은 누구인가 :)
Stephen Kennedy

8

Wikipedia에서 볼 수있는 매우 긴 Unix 신호 목록이 있습니다 . 다소 혼란스럽게도 실제로 kill어떤 신호를 프로세스에 보내는 데 사용할 수 있습니다 . 예를 들어, kill -SIGSTOP 12345프로세스 12345는 실행을 일시 중지하고 kill -SIGCONT 12345재개하도록 지시합니다. 의 약간 덜 애매한 버전 kill -9kill -SIGKILL.


2
신호를 보내는 기본 시스템 호출도라고 kill합니다. 아마도 대부분의 원래 신호 집합 (번호 1 ~ 15)의 기본 동작이 프로세스를 종료하는 것이었기 때문일 것입니다.
zwol

4

9 번에는 아무런 의미가 없다고 생각합니다. 또한 일반적인 믿음에도 불구하고 kill프로세스를 죽일뿐만 아니라 프로세스에 신호를 보내는데도 사용됩니다. 정말로 궁금하다면 여기여기에서 읽을 수 있습니다 .


3

왜 kill -9 : 신호 목록의 숫자 9가 "고양이의 9 명의 생명을 죽이는 것"과 관련하여 SIGKILL로 선택되었습니다.


3

SIGKILL프로세스를 종료하는 데 사용합니다. SIGKILL무시하거나 처리 할 수 ​​없습니다. Linux에서 SIGKILL.

kill -9 <process_pid> 
kill -SIGKILL <process_pid> 
killall -SIGKILL <process_name>
killall -9 <process_name>

1

쉘에 kill -l 명령을 입력하십시오.

9 번째 숫자 [ 9) SIGKILL ] 에서 찾을 수 있으므로 kill -9 또는 kill -SIGKILL을 사용할 수 있습니다.

SIGKILL은 확실한 킬 시그널이며, 배치, 무시 또는 처리 할 수 ​​없습니다. 항상 프로세스를 종료하는 기본 동작으로 작동합니다.


1

그만큼 -9 signal_number이고 명하여 전송 메시지가 KILL (비 잡을 비 무시할) 형으로 할 것인지를 지정한다.

kill -9 pid

아래와 같습니다.

kill -SIGKILL pid

signal_number를 지정하지 않으면 기본값은 TERM (소프트웨어 종료 신호) 인 -15입니다. 입력 kill <pid>kill -15 <pid>.


0

둘 다 kill -sigkill processID, kill -9 processID와 동일합니다. 기본적으로 프로세스의 강제 종료입니다.


0

이 "kill % 1"처럼 죽일 수없는 프로세스가 있습니다. 프로세스를 종료해야한다면 kill -9 프로세스를 종료하기 위해 특수 명령이 사용됩니다. 예를 들어 vim을 열고 ctrl + z를 사용하여 중지하면 작업을보고이 프로세스를 적용한 후 종료 프로세스가 종료되지 않으므로 여기서 종료를 위해 kill -9 명령을 사용합니다.

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