Kill

De Pontão Nós Digitais

O comando kill é usado para enviar um sinal para um processo ou para matá-lo (encerrar sua execução). Geralmente usa-se: kill -SINAL PID. Sendo que PID é o número que identifica o processo (Process ID).

Existem ainda outras maneiras de matar efetivamente um processo (trabalho), como matar pelo nome ou por parte do nome, matar o processo colocando o ponteiro do mouse sobre a janela e clicando etc.

Neste artigo vamos ver apenas 4 maneiras de matar um processo e não vamos esgotar o uso do comando kill.

Para começar temos que saber que processo queremos matar. Podemos descobrir listando todos os processos que estão em execução e procurando um a um na lista apresentada com o comando:

 $ ps aux
 USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
 root         2  0.0  0.0      0     0 ?        S    Ago05   0:00 [kthreadd]
 root         3  0.0  0.0      0     0 ?        S    Ago05   0:13 [ksoftirqd/0]
 root         5  0.0  0.0      0     0 ?        S<   Ago05   0:00 [kworker/0:0H]
 system   22730  0.0  0.0  14676   792 ?        S    10:18   0:00 gnome-pty-helper
 system   22731  0.0  0.0  21004  3548 pts/3    Ss   10:18   0:00 bash
 system   22773 17.7  1.8 1340992 148520 ?      Sl   10:19   0:07 /usr/lib/chromium/chromium


Mas este método pode demorar e dar trabalho. Então se souber o nome do processo, pode procurar direto por ele, coisa que facilita muito a vida. Se o processo fosse o firefox, por exemplo, poderíamos procurar usando o comando:

 $ pps -ef | grep iceweasel
 system   22909  4201  1 10:23 ?        00:00:02 iceweasel
 system   23036 22731  0 10:27 pts/3    00:00:00 grep iceweasel

kill - Matar o processo informando o PID

Todos os exemplos abaixo enviam um sinal TERM para o processo especificado pelo PID, ele é o padrão do comando kill. Tanto o nome quanto o número do sinal pode ser usado. É só procurar o PID do processo e usá-lo no exemplo.

Ex. 1 :

 $ kill -SIGTERM pid

Ex. 2 :

 $ kill -TERM pid

Ex. 3 :

 $ kill -15 pid 

Se quiséssemos matar o firefox faríamos:

 $ ps -ef | grep firefox
 XXXXXXXXXXXXXXXXXXXXXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 1986 ?        Sl     7:22 /usr/lib/firefox-3.5.3/firefox 
 $ kill -9 1986 

Dicas:

a) Mata todos os processos que sua permissão no sistema permite:

 $ kill -9 -1 

b) Lista as opções disponíveis de sinal em uma tabela:

 $ kill -L 

Feito. Vamos ver outro método.

O killall e o pkill

killall - Matar processo informando o nome

Muito fácil. Não é preciso especificar o PID, é só informar o nome do processo. Mas se mais de um processo estiver rodando com o nome informado, todos serão terminados.

No exemplo do firefox o procedimento seria:

 $ killall -9 firefox 

Algumas opções úteis são:

a) -e, --exact

Procura o nome exato (verifica apenas os 15 primeiros caracteres).

b) -I, --ignore-case

Não diferencia caixa alta e caixa baixa.

c) -u, --user

Mata apenas processos de um determinado usuário.

pkill - Envia sinal baseando-se no nome do processo

Envia um sinal para quaisquer processos informando-se todo o nome ou apenas parte do nome deles. Não é preciso especificar o PID dos processos para enviar o sinal. A parte do nome ou o nome todo deve estar especificado nos 15 primeiros caracteres para ser comparado. Tendo um processo cyclope rodando um exemplo seria:

a) Verificar os processos que serão afetados pelo pkill usando o comando:

 $ pgrep -l cyclope
 14801 cyclope-server
 14852 cyclope-client
 14853 cyclope-data 

b) Enviar o sinal:

 $ pkill cyclope 

Pronto, processo(s) morto(s).

Salve o xkill

xkill - Cliente X para o kill

É a maneira mais simples e fácil de matar um processo com problemas no X. Tendo o processo uma janela aberta e travada na tela basta executar o comando, colocar o cursor sobre ela e clicar, que o xkill informa ao servidor X que processo deve matar. O procedimento é simples:

1) No seu gerenciador de janelas pressione Alt+F2 e na janela de execução digite xkill.

2) O cursor vai se transformar, indicando que está pronto para marcar a janela (processo) teimosa e acabar com ela.

3) Posicione o cursor e clique o botão do mouse.

Feito!

Se o seu gerenciador de janelas não fornece uma janela de execução pressionando Alt+F2, você pode chamá-lo por um terminal assim:

 $ xkill 

O resto é igual ao explicado acima.


Referência