Kill
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.