Base de Conhecimento

Comando kill: como encerrar processos travados na VPS

  • comando kill, kill, pkill, killall, processos, vps
  • Usuários acharam útil: 0

Aprenda a usar o comando kill na VPS: achar o PID, escolher o sinal, usar pkill e killall, parar serviços do systemd e entender o processo zumbi.

Por Redação Eleven Host · @robson.direitodigital · 31 de outubro de 2026 · 9 min de leitura

Arte da Eleven Host: janela de terminal com o título: Comando kill: como encerrar processos travados na VPS

Capa da Redação Eleven Host para o guia: Comando kill: como encerrar processos travados na VPS Arte: Eleven Host

O comando kill envia um sinal a um processo, indicado pelo número de identificação dele, o PID. Se você não escolher o sinal, o padrão é o TERM, que pede ao programa para encerrar. Na VPS, é um jeito de tentar parar um processo travado sem reiniciar a máquina.

O nome engana: kill não "mata" por si só, ele entrega um recado ao processo. Neste guia você vai ver como achar o PID, quando usar TERM e quando usar KILL, como parar processos pelo nome com pkill, o que muda no killall, como lidar com serviços do systemd e por que um processo zumbi não some com kill. Se a VPS ainda é novidade para você, comece pelo guia O que é servidor VPS: guia simples para iniciantes.

O que o kill faz de verdade

Segundo a página de manual, o comando kill envia o sinal especificado aos processos ou grupos de processos indicados. Cada sinal tem um nome e um número, e o que acontece depois depende do sinal e do programa.

Para ver os nomes de sinais que o sistema conhece, use a opção -l:

kill -l

Sem número nem máscara, a opção lista os nomes. Se você passar um número, ela o converte para o nome. Para escolher o sinal ao enviar, a opção -s aceita o nome ou o número. Estes são exemplos montados com as opções documentadas:

kill 12345

kill -s TERM 12345

kill -s KILL 12345

kill -HUP 12345

O primeiro e o segundo fazem a mesma coisa, porque sem sinal o padrão é TERM. O 12345 é um PID de exemplo.

Kill entrega um sinal. Parar o processo é uma decisão do programa que o recebe, e a exceção são os sinais que ele não consegue interceptar.

Achar o PID antes de encerrar

Antes de mandar um sinal, confirme qual processo é o certo. A página do ps traz estes exemplos:

ps -ef

ps axu

ps -ejH

ps axjf

Os dois primeiros listam os processos em sintaxe padrão e BSD. Os outros dois imprimem a árvore de processos, para ver quem é pai de quem. Para listar só o PID de um programa pelo nome:

ps -C syslogd -o pid=

O pgrep faz uma busca parecida pelo nome. Com a opção -l ele mostra o nome junto do PID, e com -a mostra a linha de comando completa:

pgrep -a meu-app

Se o processo travado está consumindo memória, vale olhar o uso antes de decidir. O guia Ver uso de memória no Linux: free, top e htop na VPS mostra como acompanhar isso.

TERM primeiro, KILL só se precisar

A página de manual diz que o sinal TERM deve ser usado de preferência ao sinal KILL, que é o número 9. O motivo é a limpeza: o programa pode ter um tratador para o TERM e, ao recebê-lo, fazer a limpeza. O KILL não pode ser interceptado, então o processo não tem chance de fazer essa limpeza antes de terminar.

Alguns sinais da página signal(7), com os números da coluna das arquiteturas x86 e ARM, são estes:

  • SIGHUP (1): terminal de controle desconectado ou fim do processo que o controlava.
  • SIGKILL (9): sinal de kill, que não pode ser capturado, bloqueado nem ignorado.
  • SIGTERM (15): sinal de término.

A opção -s aceita o nome do sinal, então você não precisa decorar o número.

Uma ordem prática, que é orientação nossa e não uma citação da documentação: mande TERM, espere alguns instantes, confira com ps se o processo saiu e só então use KILL.

kill -s TERM 12345

ps -ef

kill -s KILL 12345

O SIGHUP pede cuidado: no exemplo da página do pgrep, pkill -HUP syslogd serve para fazer o syslog reler o arquivo de configuração. O que o HUP provoca depende do programa que o recebe.

VPS a partir de R$ 17,00/mês no Plano Bronze; confira na loja o que cada plano inclui. Quer conhecer a VPS da Eleven Host? Conhecer a VPS

pkill e pgrep: encerrar pelo nome

Quando você conhece o nome do programa, mas não o PID, o pkill envia o sinal a cada processo que combinar com o padrão. Sem outro sinal, o padrão é TERM. A sintaxe do sinal é um traço seguido do nome ou do número, como no exemplo da própria página:

pkill -HUP syslogd

Estas são algumas das opções da página do pgrep:

  • -f: normalmente o padrão é comparado só com o nome do processo; com -f, a linha de comando inteira entra na comparação.
  • -u: só processos do usuário efetivo indicado.
  • -x: o nome precisa ser exatamente igual ao padrão.
  • -l e -a: existem só no pgrep, e mostram o nome ou a linha de comando completa ao lado do PID.

O risco do -f é pegar um processo que você não esperava, porque o padrão passa a valer para a linha de comando inteira. Uma precaução nossa: rode primeiro o pgrep com as mesmas opções, olhe a lista e só depois troque por pkill. Estes exemplos são montados com as opções documentadas:

pgrep -f "python3 meu-app.py"

pkill -f "python3 meu-app.py"

pkill -u usuario meu-app

Segundo a página, -l e -a são só do pgrep. Para ver nomes e linhas de comando, use o pgrep.

killall: vários processos com o mesmo comando

A página do killall diz que ele envia um sinal aos processos que estejam rodando algum dos comandos indicados, e que o sinal padrão também é o SIGTERM. A página o apresenta como parte do projeto psmisc.

Opções úteis, segundo a página:

  • -i: pergunta antes de encerrar cada processo.
  • -u: só processos do usuário indicado.
  • -w: espera os processos morrerem.

Um exemplo com a opção de confirmação:

killall -i meu-app

A página avisa que o killall pode ficar esperando sem fim se o sinal foi ignorado, não teve efeito ou o processo ficou em estado zumbi. Esse é o assunto de uma das seções adiante.

Serviço do systemd: use systemctl stop

Se o processo faz parte de um serviço gerenciado pelo systemd, a recomendação aqui é parar o serviço pelo próprio systemd. Esse conselho é nosso, e não uma frase da documentação. A página do systemctl descreve o stop como parar (desativar) uma ou mais unidades, e o restart como parar e depois iniciar. O guia systemctl: como iniciar, parar e ver serviços na VPS detalha esses comandos.

systemctl status meu-app

sudo systemctl stop meu-app

sudo systemctl restart meu-app

O systemctl também tem um subcomando kill, que envia um sinal do Unix a um ou mais processos da unidade. A opção --signal= escolhe o sinal, com padrão SIGTERM, e a --kill-whom= escolhe para quem enviar (main, control, cgroup ou all, sendo all o padrão):

sudo systemctl kill meu-app

sudo systemctl kill --signal=SIGKILL meu-app

A diferença é de papel. O stop desativa a unidade pelo systemd. O systemctl kill só manda sinal aos processos dela. Para ler o histórico do serviço, veja journalctl: como ver os logs do sistema na VPS.

Processo zumbi: kill não resolve

No ps, um processo em estado Z aparece como "defunct", ou zumbi: ele terminou, mas o pai ainda não recolheu o resultado. A página wait(2) explica que um filho que termina e não foi esperado vira zumbi, e o kernel guarda o PID, o status de término e o uso de recursos até o pai fazer o wait.

Como o zumbi já terminou, não há o que encerrar. Quem remove o zumbi é o wait do pai. Se o pai termina, o init adota os filhos zumbis e faz o wait automaticamente.

Isso importa porque, segundo a mesma página, enquanto o zumbi não é removido ele ocupa uma posição na tabela de processos do kernel, e, se a tabela encher, não será possível criar novos processos. Na prática, olhe o processo pai na árvore do ps -ejH.

Permissões: processo de outro usuário

Segundo a página kill(2), para um usuário comum enviar o sinal, o ID do usuário real ou efetivo de quem envia precisa ser igual ao ID real ou salvo do processo alvo. Na prática, para sinalizar um processo de outro usuário, você roda o comando com sudo. Quando o sistema recusa, o erro pode ser o EPERM, que indica falta de permissão para enviar o sinal.

Dois valores especiais pedem cuidado:

  • PID 0: os processos do grupo do processo que chamou recebem o sinal.
  • PID -1: os processos com PID maior que 1 recebem o sinal.

O PID -1 atinge de uma vez os processos com PID maior que 1 para os quais você tem permissão de envio. Releia o comando duas vezes antes de apertar Enter.

Checklist antes de encerrar um processo

  • Confirme o PID com ps ou pgrep -a, e veja o nome e a linha de comando.
  • Se for um serviço do systemd, use sudo systemctl stop primeiro.
  • Mande TERM (o padrão) e espere o programa fazer a limpeza.
  • Confira com ps se o processo saiu antes de pensar em KILL.
  • Use kill -s KILL só se o TERM não funcionou, sabendo que ele não tem chance de fazer a limpeza.
  • Com pkill -f, rode o mesmo padrão no pgrep -a antes.
  • Processo de outro usuário pede sudo; cuidado com os PIDs 0 e -1.
  • Processo em estado Z é zumbi: olhe o pai.

VPS a partir de R$ 17,00/mês no Plano Bronze; confira na loja o que cada plano inclui. Quer conhecer a VPS da Eleven Host? Ver os planos de VPS

Perguntas frequentes

O que o comando kill faz?

Envia um sinal a um processo ou grupo de processos, indicado pelo PID. Sem sinal escolhido, envia o TERM, que pede ao programa para encerrar.

Qual a diferença entre kill e kill -9?

O kill sozinho envia TERM, que o programa pode tratar para fazer a limpeza. O kill -9 equivale a kill -s KILL, porque o KILL é o sinal número 9, e não pode ser interceptado.

Como achar o PID de um processo?

Use ps -ef para listar os processos, ou pgrep -a com o nome do programa para ver o PID e a linha de comando.

Kill remove um processo zumbi?

Não. O zumbi já terminou, e quem o remove é o wait do processo pai ou do init, se o pai terminar.

Como encerrar um serviço do systemd?

Use sudo systemctl stop com o nome do serviço. O systemctl kill existe, mas só envia um sinal aos processos da unidade.

Esta resposta lhe foi útil?

Artigos Relacionados