Como matar processos de zumbis no Linux

Nov 25, 2025
Linux
Fatmawati Achmad Zaenuri / Shutterstock

Programas que são mal escritos ou realizando mal podem sair processos zumbis espreitando dentro do seu computador Linux. Descubra como os zumbis são criados e como você pode finalmente colocá-los para descansar.

Como os estados do processo trabalham no Linux

O Linux, claro, tem que acompanhar todos os aplicativos e daemons em execução no seu computador. Uma das maneiras que faz isso é mantendo a tabela de processos. Esta é uma lista de estruturas na memória do kernel. Cada processo tem uma entrada nesta lista que contém algumas informações sobre isso.

Não há muito em cada uma das estruturas de mesa de processo. Eles seguram o ID do processo , alguns outros itens de dados e um ponteiro para o bloco de controle de processo (PCB) para esse processo.

É o PCB que detém os muitos detalhes que o Linux precisa procurar ou definir para cada processo. O PCB também é atualizado como um processo é criado, dado tempo de processamento e, finalmente, destruído.

O PCB do Linux contém mais de 95 campos. É definido Como uma estrutura chamada task_struct.h. e são mais de 700 linhas. O PCB contém os seguintes tipos de informações:

  • Estado do processo : Os estados são descritos abaixo.
  • Número do processo : Seu identificador exclusivo dentro do sistema operacional.
  • Contador de programas : Quando este processo é o próximo acesso à CPU, o sistema usará esse endereço para encontrar a próxima instrução do processo que deve ser executada.
  • Registros : A lista de registros de CPU usados ​​por este processo. A lista pode conter acumuladores, registros de índice e ponteiros de pilha.
  • Abra a lista de arquivos : Arquivos associados a este processo.
  • Informações de agendamento da CPU. : Usado para determinar com que frequência, e por quanto tempo, o tempo de processamento da CPU é concedido a este processo. A prioridade do processo, ponteiros para agendar filas, e outros parâmetros de agendamento devem ser gravados no PCB.
  • Informações de gerenciamento de memória : Detalhes sobre a memória Este processo está usando, como os endereços de início e término da memória do processo e ponteiros para as páginas de memória.
  • Informações de status de E / S : Quaisquer dispositivos de entrada ou saída usados ​​pelo processo.

O "estado do processo" pode ser qualquer um dos seguintes:

  • R: Um processo de corrida ou runnable. Correndo o que significa que está recebendo ciclos de CPU e execução. Um processo de runnable está pronto para executar e aguardar um slot da CPU.
  • S: Um processo de dormir. O processo aguarda uma ação para concluir, como uma operação de entrada ou saída, ou para um recurso para se tornar disponível.
  • D: O processo está em um estado de sono ininterrupto. Está usando uma chamada de sistema de bloqueio e não pode continuar até que as chamadas do sistema tenham sido concluídas. Ao contrário do estado "Sleep", um processo nesse estado não responderá aos sinais até que a chamada do sistema seja concluída e a execução tenha retornado ao processo.
  • T: O processo terminou (parado) porque recebeu o Sigstop. sinal. Isto só responderá ao Sigkill. ou Sigcont. sinais, que matam o processo ou o instruem a continuar, respectivamente. Isso é o que está acontecendo quando você troca de primeiro plano ( fg. ) para fundo ( bg) tarefas.
  • Z: Um processo zumbi. Quando um processo é concluído, isso não desaparece. Ele libera qualquer memória que está usando e remove-se da memória, mas sua entrada na tabela de processos e PCB permanecem. Seu estado é definido para Exit_zombie. , e seu processo pai é notificado (pelo Sigchld. sinal) que o processo infantil terminou.

No estado zumbi, o processo pai chama um dos esperar() Famílias de funções quando o processo filho é criado. Em seguida, espera uma mudança de estado no processo filho. O processo filho foi parado, continuado ou morto por um sinal? Tem terminado correndo através da conclusão natural do seu código?

Se a mudança de estado é uma que significa que o processo filho parou de funcionar, seu código de saída é lido. Em seguida, o PCB da criança é destruído e sua entrada na tabela de processos é removida. Idealmente, tudo isso acontece em um piscar de olhos, e processos no estado zumbi não existem há muito tempo.

RELACIONADO: Como executar e controlar processos de fundo no Linux

O que causa processos de zumbis no Linux?

Um processo pai mal escrito pode não chamar o esperar() função quando o processo filho é criado. Isso significa que nada está assistindo às mudanças de estado no processo filho, e Sigchld. sinal será ignorado. Ou talvez outra aplicação esteja afetando a execução do processo pai, seja devido a má programação ou intenção maliciosa.

No entanto, se o processo pai não estiver assistindo às alterações de estado no processo filho, a limpeza do sistema adequada não ocorrerá. O PCB e a entrada na tabela de processos não serão removidos quando o processo filho terminar. Isso resulta no estado zumbi nunca sendo removido do PCB.

Os zumbis usam um pouco de memória, mas geralmente não representam um problema. A entrada na tabela de processos é pequena, mas, até que seja liberada, o ID do processo não pode ser reutilizado. Em um sistema operacional de 64 bits, é improvável que cause quaisquer problemas porque o PCB é muito maior que a entrada da tabela de processo.

Um grande número de zumbis poderia, concebivelmente, afetar a quantidade de memória gratuita para outros processos. Se você tem muitos zumbis, no entanto, você tem um problema sério com o aplicativo pai ou um bug do sistema operacional.

Como remover processos de zumbis

Você não pode matar um processo de zumbis porque já está morto. Não responderá a nenhum sinal porque foi removido da memória - não há lugar para enviar um Sigkill. sinal. Você pode tentar enviar o Sigchld. Sinal para o processo pai, mas se não funcionar quando o processo filho terminou, é improvável que também funcione agora.

A única solução confiável é matar o processo pai. Quando é rescindido, seus processos infantis são herdados pelo iniciar Processo, que é o primeiro processo a ser executado em um sistema Linux (seu ID de processo é 1).

o iniciar O processo realiza regularmente a limpeza necessária dos zumbis, por assim dizer, você só tem que matar o processo que os criou. o principal O comando é uma maneira conveniente de ver se você tem algum zumbis.

Digite o seguinte:

  Top  

Este sistema tem oito processos zumbis. Nós pode listar isso usando o. PS comando e canalizando-o em egrrep . Mais uma vez, os processos de zumbis têm uma bandeira do estado de "Z", e você geralmente também verá "extinta".

Digite o seguinte:

 PS AUX | egrep "z | defunto" 

Os processos zumbis estão listados.

Esta é uma maneira mais neal de descobrir os IDs do processo de zumbis do que rolagem para frente e para trás através principal . Também vemos que um aplicativo chamado "Badprg" gerou esses zumbis.

O ID do processo do primeiro zumbi é 7641, mas precisamos encontrar o ID do processo de seu processo pai. Nós podemos fazê-lo usando PS novamente. Vamos usar a opção de saída ( -o. ) contar PS Para exibir apenas o ID do processo do pai e passá-lo com o ppid =. bandeira.

O processo que queremos encontrar será indicado usando o -p. opção (processo) e, em seguida, passando no ID do processo do zumbi.

Portanto, digamos o seguinte comando para procurar as informações do processo para o processo 7641, mas apenas relatará o ID do processo pai:

 PS -O ppid = -P 7641 

Somos informados que o ID do processo pai é 7636. Agora podemos referência cruzada, usando PS mais uma vez.

Nós vemos isso corresponde ao nome do processo pai de anterior. Para matar o processo pai, use a opção Sigkill com o comando Kill da seguinte forma:

 Kill -Sigkill 7636 

Dependendo do proprietário do processo pai, você também pode precisar usar sudo .

Zumbis não são assustadores ...

... a menos que estejam em uma horda maciça. Alguns não são nada para se preocupar e uma reinicialização simples irá limpá-las.

No entanto, se você perceber que um aplicativo ou processo está sempre desovando zumbis, é algo que você deve investigar. É mais provável que seja apenas um programa escrito desleixado, caso em que, talvez haja uma versão atualizada que limpa adequadamente após seus processos filhos.


Linux - Artigos mais populares

As melhores distribuições do Linux sem Systemd

Linux Feb 24, 2026

BMJ / Shutterstock.com. Quando as distribuições dominantes do Linux adotadas Systemd. , Dissidores Distribuições Bifurcadas e iniciou novos proj..


Como escolher entre Ubuntu, Kubuntu, Xubuntu e Lubuntu

Linux Mar 19, 2025

Tomeqs / shutterstock.com. Há mais de um Ubuntu. Você pode baixar o Ubuntu, Kubuntu, Xubuntu ou Lubuntu: Mas qual é a diferença, e qual você deve escolher..


Como obter um gerenciador de dispositivos gráficos para Linux

Linux Mar 17, 2025

África Studio / Shutterstock.com Há infinitas utilitários de linha de comando do Linux que mostram os detalhes de hardware do seu computador . Ha..


Docker para iniciantes: tudo que você precisa saber

Linux Jun 15, 2025

Docker. Cria aplicativos embalados chamado recipientes. Cada contêiner fornece um ambiente isolado semelhante a máquina virtual (VM). Ao contrário das VMs..


Como atualizar o Ubuntu Linux

Linux Aug 27, 2025

Tomeqs / shutterstock.com. Precisa do mais recente e maior no software Ubuntu? Você não precisa ser um Linux Pro. Leia para descobrir como atualizar o Clas..


Como desligar um PC do Ubuntu

Linux Oct 12, 2025

Como todos os computadores pessoais, um PC executando o Ubuntu. O sistema operacional de desktop deve ser desligado agora e depois. O desligamento do Ubuntu é fácil, e você t..


Como encontrar o PID de um processo Linux com PIDOF ou PGREP

Linux Nov 15, 2025

Trabalhar com um processo Linux geralmente significa conhecer seu ID de processo ou PID. É um número exclusivo fornecido a cada software em execução. Aqui estão duas maneiras de descobrir ..


Como integrar aplicativos e scripts a um desktop Linux

Linux Oct 10, 2025

No Linux, um aplicativo sem um arquivo de desktop não se integrará ao seu ambiente de desktop. A maioria dos aplicativos fornece um, mas ocasionalmente você precisa criar um. É muito fácil..


Categorias