Ist '-9' ein Flag, um einen Befehl zu töten?

14

Was macht -9das?

Es erscheint nicht in der Syntax:

$ kill
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
$
Laser
quelle
10
-9ist eine Instanz von -sigspec, es ist äquivalent zu -s 9oder -n 9oder -s KILLoder -KILL.
Gilles 'SO - hör auf, böse zu sein'

Antworten:

21

-9Ist die Signalnummer (in diesem Fall SIGKILL), so wird kill -9ein SIGKILLan den betreffenden Prozess gesendet .

Dieses Signal bewirkt, dass der Prozess sofort beendet wird (es sei denn, er wartet in einer Kernelfunktion). Das Signal kann weder ignoriert werden, noch kann der Empfangsprozess nach dem Empfang des Signals eine Bereinigungsaktion ausführen (dh ein Signalhandler für SIGKILLwird nicht aufgerufen). Siehe auch den Wikipedia-Artikel zu SIGKILL .

Von der Manpage meines killBefehls (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.

BEARBEITEN : kill -l(der basheingebaute Befehl) listet die folgenden Signalnamen und numerischen Werte auf meinem System auf:

 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
quelle
1
Unter Debian werden auch kill -ldie numerischen Werte aufgelistet. Was ist dein Betriebssystem?
Faheem Mitha
Interessanterweise verwende ich Ubuntu (das, soweit ich weiß, auf Debian basiert). Andererseits habe ich gerade bemerkt, dass man killnumerische Werte für einige der Signale aufgelistet sind.
Andre Holzner
Nun, killist in procps, welche Version 1:3.2.8-9in Debian Squeeze ist. Und ja, Ubuntu ist im Grunde Debian. Deshalb frage ich mich, warum kill -lnicht dasselbe zurückkommt.
Faheem Mitha
1
es stellt sich heraus, dass ich den zsheingebauten killBefehl ausgeführt habe, nicht /bin/kill(der tatsächlich die numerischen Werte auflistet, wie Sie sagen)
Andre Holzner
5
@FaheemMitha Es gibt zwei Gründe, warum Muscheln killeingebaut werden müssen. Hiermit kann der killBefehl Auftragsnummern oder -namen (z kill %1. B. ) akzeptieren . Es kann killauch dann verwendet werden, wenn eine bestimmte Anzahl von Prozessen erreicht wurde.
Gilles 'SO - hör auf, böse zu sein'
0

man signal

Zeigt Ihnen die Zuordnung zwischen Signalnummern und Signalnamen.

David Paigen
quelle