CodeGym /Cursos /Docker SELF /Finalizando processos: comandos `kill`, `killall`, `pkill...

Finalizando processos: comandos `kill`, `killall`, `pkill`

Docker SELF
Nível 2 , Lição 5
Disponível

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.

  1. Veja todos os processos sleep rodando com o comando ps:
ps aux | grep sleep

Você verá o PID de cada processo.

  1. Encerre um processo usando seu PID, por exemplo, 1234:
kill 1234
  1. Encerre todos os processos sleep de uma vez:
killall sleep
  1. Inicie mais alguns processos sleep e encerre-os usando pkill:
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.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION