Da série de comandos tradicionais do universo Linux e Unix, o comando kill permite interromper processos arbitrariamente.
Uma definição simplificada de processo é de que se trata de um programa ou uma tarefa em execução
Ao iniciar, cada processo recebe uma identificação numérica única, atribuída pelo sistema — chama-se PID, Process IDentification.
Para “matar” um programa em execução, você precisa saber o PID dele (no final do artigo, vou mostrar como matar um processo sem saber seu PID).
POSTS RELACIONADOS
A sintaxe do comando kill
Apesar do nome, o comando kill serve para muito mais do que apenas matar processos.
Sua função é enviar sinais para processos e alguns destes não tem absolutamente qualquer coisa a ver com “morte”.
Sua execução segue, portanto, a seguinte forma:
kill -s SINAL PID
Nos exemplos, abaixo, vou mostrar outras formas de usar o comando.
Como encontrar o PID de um processo específico
O comando ps aux
pode mostrar uma lista bem extensa de processos em execução, o que pode dificultar a busca.
É aqui que entra o comando grep, um velho conhecido da gente.
Para exemplificar, vou rodar o ftp em background (&) e determinar o seu PID com o grep em conjunto com o ps:
ftp &
[1] 2983ps aux | grep ftp
proftpd 1242 0.0 0.1 11996 2172 ? Ss 10:01 0:00 proftpd: (accepting connections) 1000 2983 0.0 0.0 5212 1012 pts/5 T 11:51 0:00 ftp 1000 2985 0.0 0.0 4724 836 pts/5 S+ 11:51 0:00 grep --color=auto ftp [1]+ Parado ftp
Neste exemplo, o programa ftp tem o PID 2983. No seu sistema o PID será diferente. Verifique.
O comando kill, em exemplos
Uma vez que você já sabe como determinar o PID dos processos, já pode entender como usar esta informação em conjunto com o kill.
Há dois sinais básicos para indicar que se deseja interromper a execução de um processo:
- SIGTERM(15) — que requisita educadamente a interrupção de um processo. Cabe a este aceitar ou ignorar o sinal. Se aceitar, ele finaliza sua própria execução, graciosamente e gravando o que precisa ser gravado. Há um sinal semelhante a ele, chamado SIGINT. Cada sinal atende por um número. O do SIGTERM é 15.
- SIGKILL(9) — envia uma requisição ao processo para que este seja terminado imediatamente. Ele não pode ser ignorado e é sequer analisado pelo processo, que é interrompido incontinenti. O número deste sinal é 9.
Vamos ver como aplicá-los:
Podemos enviar um SIGTERM ao processo 2983, de 4 formas diferentes:
kill 2983
kill -s TERM 2983
kill -TERM 2983
ou indicando o número do sinal:
kill -15 2983
Para enviar um SIGKILL, use uma destas 3 opções:
kill -9 2983
kill -s KILL 2983
kill -KILL 2983
Espero ter deixado claro, como terminar um processo via terminal, no Linux. O ambiente gráfico tem um comando similar, chamado xkill, do qual falaremos em outro artigo.
POSTS RELACIONADOS
Como finalizar um programa sem conhecer o seu PID
Há casos em que um processo abre vários outros processos – em que um programa abre várias outras instâncias de si mesmo. Quando o usuário dá um ps
no sistema, vê uma quantidade muito grande de PIDs para fechar.
Veja a figura, abaixo, onde se pode ver uma certa quantidade de processos do chromium-browser
abertos.
É possível fechá-los todos com o killall. Veja como:
killall chromium-browser
Você pode repassar o número de um sinal para o comando, assim:
killall -9 chromium-browser
Fácil, não é?