'-9' é uma bandeira para matar o comando?

14

O que -9faz?

Ele não aparece na sintaxe:

$ kill
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
$
lazer
fonte
10
-9é uma instância de -sigspec, é equivalente a -s 9ou -n 9ou -s KILLou -KILL.
Gilles 'SO- stop be evil'

Respostas:

21

-9é o número do sinal (neste caso SIGKILL), então kill -9envia um SIGKILLpara o processo em questão.

Este sinal faz com que o processo seja encerrado imediatamente (a menos que esteja aguardando em uma função do kernel). O sinal não pode ser ignorado e o processo de recebimento não pode executar nenhuma ação de limpeza após receber o sinal (ou seja, um manipulador de sinal SIGKILLnão é chamado). Veja também o artigo da Wikipedia sobre SIGKILL .

Na página de manual do meu killcomando (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.

EDIT : kill -l(o bashcomando embutido) lista os seguintes nomes de sinal e valores numéricos no meu sistema:

 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
fonte
1
No Debian também kill -llista os valores numéricos. Qual é o seu sistema operacional?
Faheem Mitha
interessante, eu estou executando o Ubuntu (que é baseado no Debian, tanto quanto eu sei). Por outro lado, acabei de notar que man killlistam valores numéricos para alguns dos sinais.
21811 Andre Holzner
Bem, killestá dentro procps, que é a versão 1:3.2.8-9do Debian squeeze. E sim, o Ubuntu é basicamente o Debian. Então, eu me pergunto por kill -lque não retorna a mesma coisa.
Faheem Mitha
1
verifica-se que eu estava correndo zsh's incorporado killcomando, não /bin/kill(que na verdade lista os valores numéricos como você diz)
Andre Holzner
5
@FaheemMitha Há duas razões pelas quais os shells precisam de um killbuilt-in. Permite que o killcomando aceite números ou nomes de trabalhos (por exemplo kill %1). E permite killser usado mesmo que algum limite de contagem de processos tenha sido atingido.
Gilles 'SO- stop be evil'
0

man signal

Irá mostrar o mapeamento entre números e nomes de sinais.

David Paigen
fonte