Czy „-9” oznacza flagę do zabicia?

14

Co ma -9zrobić?

Nie pojawia się w składni:

$ kill
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
$
Lazer
źródło
10
-9jest przykładem -sigspec, jest równoważne z -s 9lub -n 9lub -s KILLlub -KILL.
Gilles „SO- przestań być zły”,

Odpowiedzi:

21

-9jest numerem sygnału (w tym przypadku SIGKILL), więc kill -9przesyła znak SIGKILLdo danego procesu.

Ten sygnał powoduje natychmiastowe zakończenie procesu (chyba że czeka on w funkcji jądra). Sygnału nie można ani zignorować, ani proces odbiorczy nie może wykonać żadnej operacji czyszczenia po odebraniu sygnału (tzn. SIGKILLNie jest wywoływana procedura obsługi sygnału ). Zobacz także artykuł w Wikipedii na temat SIGKILL .

Ze strony man mojego killpolecenia (Linux):

   The  default  signal  for  kill is TERM. Use -l or -L to list available
   signals.  Particularly useful signals include  HUP,  INT,  KILL,  STOP,
   CONT,  and  0.   Alternate  signals  may be specified in three ways: -9
   -SIGKILL -KILL.

EDYCJA : kill -l( bashwbudowane polecenie) wyświetla następujące nazwy sygnałów i wartości liczbowe w moim systemie:

 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
Andre Holzner
źródło
1
Na Debianie kill -lzawiera również wartości liczbowe. Jaki jest twój system operacyjny?
Faheem Mitha
co ciekawe, uruchamiam Ubuntu (o ile wiem, oparte na Debianie). Z drugiej strony, właśnie zauważyłem man killlistę wartości liczbowych dla niektórych sygnałów.
Andre Holzner,
Cóż, killjest w procps, która jest wersją 1:3.2.8-9w squeeze Debiana. I tak, Ubuntu to w zasadzie Debian. Zastanawiam się więc, dlaczego kill -lnie zwraca tego samego.
Faheem Mitha,
1
okazuje się, że uruchomiłem zshwbudowaną killkomendę, a nie /bin/kill(która faktycznie wyświetla wartości liczbowe, jak mówisz)
Andre Holzner
5
@FaheemMitha Istnieją dwa powody, dla których powłoki potrzebują killwbudowanego. Pozwala to killkomendzie zaakceptować numery zadań lub nazwy (np kill %1.). Pozwala to killna użycie nawet po osiągnięciu pewnego limitu liczby procesów.
Gilles „SO- przestań być zły”,
0

man signal

Pokaże mapowanie między numerami sygnałów i nazwami sygnałów.

David Paigen
źródło