Kill & Killall

10/11/2008 11:21


Pelo nome pode-se pensar que o comando kill mata aplicações. Porém, seu objetivo na verdade é enviar sinais para os processos. Há vários sinais diferentes que o kill pode enviar para um processo. Veja a lista de todos os sinais conhecidos: 

# 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 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 32) SIGRTMIN 33) SIGRTMIN+1
34) SIGRTMIN+2 35) SIGRTMIN+3 36) SIGRTMIN+4 37) SIGRTMIN+5
38) SIGRTMIN+6 39) SIGRTMIN+7 40) SIGRTMIN+8 41) SIGRTMIN+9
42) SIGRTMIN+10 43) SIGRTMIN+11 44) SIGRTMIN+12 45) SIGRTMIN+13
46) SIGRTMIN+14 47) SIGRTMIN+15 48) SIGRTMAX-15 49) SIGRTMAX-14
50) SIGRTMAX-13 51) SIGRTMAX-12 52) SIGRTMAX-11 53) SIGRTMAX-10
54) SIGRTMAX-9 55) SIGRTMAX-8 56) SIGRTMAX-7 57) SIGRTMAX-6
58) SIGRTMAX-5 59) SIGRTMAX-4 60) SIGRTMAX-3 61) SIGRTMAX-2
62) SIGRTMAX-1 63) SIGRTMAX


Podemos saber qual a função de cada sinal consultando a man page signal. 

# man 7 signal 

Vamos finalizar o processo correspondente ao agendador de tarefas cron. Primeiro, vamos visualizar o PID do processo: 

# pgrep cron
347 

Lembre-se que para visualizar o PID de um processo você pode utilizar o comando ps, top e jobs. No exemplo foi usado o comando pgrep, que é usado para saber o PID de um processo baseado no nome ou atributo. Agora que temos o numero PID do processo vamos finalizá-lo: 

# kill -9 347 

Agora vamos apenas parar a execução de um processo: 

# pgrep inetd
13002 

# kill -19 13002
# ps lax | grep inetd
140 0 13002 1 9 0 1996 708 signal T ? 0:00 /usr/sbin/inetd 

Veja que o processo correspondente ao inet foi interrompido. Agora vamos colocá-lo em execução: 

# kill -18 13002
# ps lax | grep inetd
140 0 13002 1 9 0 1996 708 select S ? 0:00 /usr/sbin/inetd 

Somente o superusuário pode enviar sinais a processos de outros usuários. 

killall

O killall é um comando que finaliza processos através do nome. 

# ps aux | grep vi
root 13349 0.1 1.0 3016 1856 tty1 S 13:14 0:00 vi
root 13351 0.1 1.0 3016 1856 tty2 S 13:14 0:00 vi


Observe que o vi está ativo na tty1 e tty2 e que existe um número de processo para cada um. Vamos encerrá-los de uma vez só: 

# killall -9 vi 

Para verificar se o vi foi finalizado, podemos receber uma confirmação do sinal usando a opção -v: 

# killall -v -9 vi
Killed vi(13349) with signal 9
Killed vi(13551) with signal 9
 

Voltar