Dlaczego numer 9 w Komendzie kill -9 w Uniksie?

Rozumiem, że to off topic, nigdzie w necie nie mogłem znaleźć i pomyślałem, że może Guru programowania w społeczności mogą to wiedzieć.
Zwykle używam

kill -9 pid
Żeby zabić robotę. Zawsze zastanawiałem się, skąd pochodzi 9. Sprawdziłem to w Internecie i jest napisane

"9 oznacza sygnał KILL, który nie jest chwytliwy ani ignorowalny. Innymi słowy sygnalizowałoby to procesowi (jakiejś uruchomionej aplikacji) natychmiastowe zamknięcie " (źródło: http://wiki.answers.com/Q/What_does_kill_-9_do_in_unix_in_its_entirety )

Ale dlaczego 9? a co z innymi numerami? czy jest jakieś znaczenie historyczne lub ze względu na architekturę Uniksa?
Author: Rafał Rawicki, 2012-03-31

13 answers

Zobacz artykuł Wikipedii na temat sygnałów uniksowych , aby uzyskać listę innych sygnałów. SIGKILL właśnie dostał numer 9.

Możesz równie dobrze używać mnemotechniki, jak liczb:

kill -SIGKILL pid
 74
Author: Rafał Rawicki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-30 23:27:25

Było 8 innych sygnałów, które wymyślili jako pierwsi.

 67
Author: Jonathon Reinhart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-30 23:26:41

Myślę, że lepszą odpowiedzią jest po prostu to:

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    
Co do "znaczenia" 9... Powiedziałbym, że prawdopodobnie nie ma. Zgodnie z Linux Programming Interface (p 388):

Każdy sygnał jest zdefiniowany jako unikalna (mała) liczba całkowita, zaczynając kolejno od 1. Liczby te są zdefiniowane w symboliczne nazwy postaci SIGxxxx . Ponieważ liczby rzeczywiste użyte do każdy sygnał różni się w zależności od implementacji , to te symboliczne nazwy które są zawsze używane w programach.

 40
Author: mikewilliamson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-13 00:59:16

Najpierw musisz wiedzieć, czym są sygnały w systemach uniksopodobnych (zajmie to tylko kilka minut).

Sygnały , są przerwaniami programowymi wysyłanymi do (działającego) programu w celu wskazania, że miało miejsce ważne wydarzenie.

Zdarzenia mogą się różnić od żądań użytkownika do nielegalnego dostępu do pamięci błędy. Niektóre sygnały, takie jak sygnał przerwania, wskazują, że użytkownik poprosił program, aby zrobić coś, co nie jest w zwykłym flow of Kontrola.

Istnieje kilka rodzajów sygnałów, których możemy użyć - aby uzyskać pełną listę wszystkich dostępnych / możliwych sygnałów użyj polecenia" $ kill-l": Tutaj wpisz opis obrazka

Na powyższym wyjściu wyraźnie widać, że KAŻDY sygnał ma 'numer sygnału' (np. 1, 2, 3) i 'Nazwa sygnału' (np. SIGUP, SIGINT, SIGQUIT) z nim skojarzony. Aby uzyskać szczegółowe informacje o tym, co robi każdy sygnał, odwiedź ten link .

[[3]}Wreszcie, przychodząc do pytanie "dlaczego numer 9 W kill -9 polecenie":

Istnieje kilka metod dostarczania sygnałów do programu lub skryptu. Jedną z powszechnie stosowanych metod wysyłania sygnału jest użycie polecenia kill - podstawowa składnia to:

$ kill -signal pid

Gdzie sygnałem jest numer lub Nazwa sygnału, po którym następuje ID procesu (pid), do którego sygnał zostanie wysłany.

Na przykład- -SIGKILL (lub -9), sygnał zabija proces natychmiast.

$ kill -SIGKILL 1001

I

$ kill -9 1001

Oba polecenia są tym samym tzn. powyżej użyliśmy 'signal name' , a później 'signal number'.

Werdykt: można wybrać, czy użyć 'nazwa sygnału', czy' numer sygnału ' za pomocą kill.

 25
Author: Nabeel Ahmed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-27 14:00:39

To nawiązanie do" Revoulution 9 " zespołu The Beatles. Zbiór splecionych ze sobą klipów dźwiękowych i odgłosów znalezionych. na nagraniu tym John Lennon powtarza w kółko "numer 9, Numer 9..."Co więcej, Ta piosenka przyciągnęła większą uwagę w 1969 roku, kiedy odkryto, że kiedy grano od tyłu, John wydawał się mówić" Turn me on, dead man..."

Dlatego dziewiąty sygnał miał być najgroźniejszym z sygnałów śmierci.

 17
Author: Stairbob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-15 14:52:20

Istnieje bardzo długa lista sygnałów uniksowych, którą można obejrzeć na Wikipedii . Nieco myląco, można użyć kill, aby wysłać dowolny sygnał do procesu. Na przykład, kill -SIGSTOP 12345 zmusza proces 12345 do wstrzymania jego wykonania, podczas gdy kill -SIGCONT 12345 nakazuje wznowienie. Nieco mniej tajemniczą wersją kill -9 jest kill -SIGKILL.

 7
Author: Lawrence Velázquez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-30 23:32:54

Nie wydaje mi się, żeby było jakieś znaczenie dla numeru 9. Ponadto, wbrew powszechnemu przekonaniu, kill jest używany nie tylko do zabijania procesów, ale także do wysyłania sygnału do procesu. Jeśli jesteś naprawdę ciekawy możesz przeczytać Tutaj i tutaj.

 4
Author: Ilia Frenkel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-30 23:32:23

SIGKILL używa do zabicia procesu. SIGKILL nie może być ignorowany ani obsługiwany. W Linuksie sposoby na SIGKILL.

**kill -9 <process_pid> 
kill -SIGKILL <process_pid> 
killall -SIGKILL <process_name>
killall -9 <process_name>** 
 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-04 05:58:15

Po co zabijać -9 : numer 9 na liście sygnałów został wybrany jako SIGKILL w odniesieniu do"zabić 9 żyć kota".

 1
Author: LaFleche78,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-26 16:17:46

Oba są takie same jak proces kill-sigkill, proces kill -9. Jego zasadniczo do wymuszonego zakończenia procesu.

 0
Author: Abhilash TC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-19 12:45:19

Wpisz polecenie kill-l w powłoce

Znajdziesz to pod 9 numerem [9) SIGKILL ], więc można użyć albo kill -9 albo kill-SIGKILL

SIGKILL jest pewnym sygnałem kill, nie może być ustawiony, ignorowany lub obsługiwany. Zawsze działa z domyślnym zachowaniem, które polega na zabiciu procesu.

 0
Author: Sandeep_black,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-26 11:05:58

Są procesy, których nie można zabić w ten sposób "zabić %1". jeśli mamy zakończyć ten proces, to specjalne polecenie jest używane do zabicia tego procesu, czyli kill -9. eg otwórz vim i zatrzymaj jeśli używając ctrl + z zobaczysz jobs i po zastosowaniu kill process ten proces nie zostanie zakończony więc tutaj używamy polecenia kill -9 do zakończenia.

 0
Author: Usman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-28 06:51:19

-9 jest signal_number i określa, że wysłana wiadomość kill powinna być typu KILL (nie-catchable, nie-ignorable).

kill -9 pid

Który jest taki sam jak poniżej.

kill -SIGKILL pid

Bez podania numeru sygnaĹ 'u domyĹ" lne jest -15, czyli TERM (sygnaĹ ' zakończenia programu). Typowanie kill <pid> jest takie samo jak kill -15 <pid>.

 0
Author: Harini,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-28 09:54:07