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?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
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.
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.
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":
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.
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.
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
.
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.
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>**
Po co zabijać -9 : numer 9 na liście sygnałów został wybrany jako SIGKILL w odniesieniu do"zabić 9 żyć kota".
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.
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.
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.
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>
.
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