Finalizando processos: comandos kill
, killall
, pkill
1. Finalizando processos
Hoje vamos dar um passo à frente e aprender comandos que permitem finalizar processos de forma eficiente. Fica ligado, porque a sua paciência com programas "travados" tá com os dias contados!
Cada aplicativo ou comando rodando no Linux é um processo. Mas o que fazer se o programa travou, tá usando 100% de recursos do processador ou simplesmente parou de funcionar direito? O trabalho do administrador (ou desenvolvedor) é intervir e finalizar o processo "rebelde". No Linux, você tem um arsenal de ferramentas pra isso: kill
, killall
e pkill
. Mas calma, apesar dos nomes assustadores, a gente não tá aqui pra quebrar tudo. Na real, isso é mais um jeito elegante de organizar as coisas.
2. Comando kill
Básico
O comando kill
finaliza um processo pelo seu identificador (PID). PID é um número único que o sistema atribui pra cada processo. Por exemplo, se você quiser finalizar um processo com o PID 1234, use este comando:
kill 1234
O Linux é bem democrático, então o comando kill
não dá uma ordem de "morrer" para o processo, mas sim envia um pedido de término. Esse pedido é chamado de "sinal". Por padrão, o kill
manda o sinal SIGTERM
(15).
O que é um sinal?
O Linux usa sinais pra se comunicar com os processos. É tipo enviar um cartão postal com diferentes intenções:
SIGTERM
(15): "Por favor, termine". É um pedido educado para o processo encerrar sua execução.SIGKILL
(9): "Pô, já deu! Você tá demitido!". Finaliza o processo na marra.SIGHUP
(1): "Ei, recarrega a configuração aí". Usado pra reiniciar alguns processos sem interrompê-los.
Exemplo de finalização forçada de um processo:
kill -9 1234
Se o processo não quiser terminar com o SIGTERM
, você pode mandar um sinal mais forte — o SIGKILL
.
Como descobrir o PID de um processo?
Pra usar o comando kill
, você precisa conhecer o PID do processo. As boas e velhas ferramentas ps
, top
ou htop
resolvem isso. Por exemplo, o comando ps aux
te mostra todos os processos rodando:
ps aux | grep firefox
Esse comando vai localizar o processo do Firefox e mostrar seu PID.
Processo finalizado, agora dá pra relaxar. Mas o que fazer se tiver vários processos "travados"? É aí que entram os comandos killall
e pkill
.
3. Comando killall
Praticidade para finalização em massa
O comando killall
permite finalizar todos os processos com um nome específico. Você não precisa procurar o PID manualmente, tudo fica bem mais simples. Por exemplo, se você quiser fechar todas as instâncias abertas do Firefox:
killall firefox
Assim como o comando kill
, o killall
envia sinais aos processos. Você pode especificar um sinal específico:
killall -9 firefox
Dica útil
Tome cuidado com comandos como killall
. Se você acidentalmente especificar um processo muito genérico, como killall python
, pode acabar finalizando todas as aplicações Python em execução, incluindo tarefas de servidor ou scripts importantes.
Quais sinais são suportados?
Para todos os comandos kill
, killall
e pkill
, a lista de sinais disponíveis pode ser consultada com o seguinte comando:
kill -l
4. Comando pkill
Procurando processos pelo nome (ou parte dele)
O comando pkill
funciona de forma parecida com o killall
, mas é mais flexível. Ele permite finalizar processos que correspondem a um padrão específico. Por exemplo:
pkill fire
O comando irá finalizar todos os processos que possuem a palavra "fire" no nome. Isso é útil quando o nome do processo é longo ou você só sabe parte dele.
Finalizando processos de usuários
Você pode finalizar processos que pertencem a usuários específicos. Por exemplo:
pkill -u username
Isso irá finalizar todos os processos pertencentes ao usuário username
.
Comparação entre kill
, killall
e pkill
Comando | Características |
---|---|
kill |
Finaliza um processo pelo PID. Trabalha de maneira pontual. |
killall |
Finaliza todos os processos com um nome especificado. Ótimo para fechar vários de uma vez. |
pkill |
Finaliza processos pelo nome ou padrão. Suporta parâmetros adicionais, como nome de usuário. |
5. Prática: encerrando processos
Bora tentar tudo o que aprendemos em ação. Primeiro, vamos rodar alguns processos de longa duração:
sleep 300 &
sleep 400 &
sleep 500 &
Esses comandos criam três processos em segundo plano com diferentes tempos de espera. Agora você pode brincar com os comandos kill
, killall
e pkill
.
- Veja todos os processos
sleep
rodando com o comandops
:
ps aux | grep sleep
Você verá o PID de cada processo.
- Encerre um processo usando seu PID, por exemplo, 1234:
kill 1234
- Encerre todos os processos
sleep
de uma vez:
killall sleep
- Inicie mais alguns processos
sleep
e encerre-os usandopkill
:
pkill sl
6. Erros comuns e pontos importantes
Se você tentar encerrar um processo para o qual não tem permissões (por exemplo, um processo de outro usuário), o comando retornará um erro. Para isso, você precisa ter privilégios de superusuário (sudo). Por exemplo:
sudo kill 1234
Outra fonte de confusão pode ser o uso de sinais muito agressivos como -9
. Isso é equivalente a desligar o computador na tomada: o sistema não terá tempo para liberar recursos ou salvar dados. Use SIGKILL
apenas como última opção.
Tome cuidado com killall
e pkill
, especialmente se você estiver gerenciando um servidor. Encerrar processos "às cegas" pode levar à perda de dados importantes.
Por que é importante conhecer os comandos para encerrar processos?
Esses comandos têm um amplo leque de aplicações, desde matar aplicativos travados até gerenciar processos em servidores. Em entrevistas de emprego, o conhecimento de kill
e pkill
pode ser um indicador significativo da sua competência, especialmente se o trabalho envolver administração de sistemas ou backend.
Use esse conhecimento para criar scripts que automaticamente encerram processos descontrolados ou liberam portas ocupadas. Por exemplo, antes de iniciar um servidor que usa a porta 8080, você pode usar:
pkill -f "port 8080"
A flexibilidade e o poder desses comandos os tornam ferramentas indispensáveis para qualquer especialista em Linux.
GO TO FULL VERSION