Encerramento de Processos
100%

Processos · Lição 5

Encerramento de Processos

Aprenda como status de saída, espera, zumbis e reparentalização completam o ciclo de vida dos processos Linux.

Um processo pode terminar retornando de sua função principal, chamando uma interface de saída ou sendo encerrado por um sinal. O kernel libera a maioria de seus recursos, mas a contabilização entre pai e filho continua até que o pai colete as informações de encerramento.

Status de Saída

Um programa que termina normalmente fornece um status inteiro. Por convenção, o status 0 significa sucesso, enquanto um valor diferente de zero informa algum tipo de falha ou resultado alternativo. Os significados exatos dos valores diferentes de zero pertencem à interface do programa.

Em um shell, inspecione o status do pipeline em primeiro plano mais recente com:

$ command
$ printf '%s\n' "$?"

Os shells expõem um intervalo limitado de status codificados e também representam o encerramento por sinais, portanto esse valor não é um registro de diagnóstico completo. Os programas devem documentar seus próprios códigos de saída.

Pela convenção Unix, qual status de saída normal indica sucesso?

Espera e Coleta

O kernel registra como um filho terminou e notifica seu pai. O pai usa uma função da família de chamadas de sistema wait() para recuperar essas informações. A coleta do registro é chamada de reaping.

A espera também pode coordenar a execução: um shell aguarda um comando em primeiro plano antes de exibir outro prompt, mas pode adiar a espera por uma tarefa em segundo plano. Um pai de longa duração bem projetado deve se organizar para coletar seus filhos sem bloquear trabalhos não relacionados.

O que uma operação wait bem-sucedida permite que um pai recupere?

Processos Zumbis

Depois que um filho termina, mas antes que seu registro de encerramento seja coletado, ele aparece como zumbi, normalmente com o estado Z em ps. Ele não executa mais nem mantém um espaço de endereços comum, mas uma entrada mínima na tabela de processos e informações de contabilização permanecem.

Enviar um sinal a um zumbi não pode fazê-lo terminar novamente. Corrija o acúmulo persistente de zumbis diagnosticando o pai que não está aguardando, reiniciando ou corrigindo esse pai por um procedimento operacional adequado ou permitindo a reparentalização para um processo que fará a coleta. Grandes quantidades podem esgotar a capacidade de PIDs ou da tabela de processos.

Qual descrição corresponde a um processo zumbi?

Órfãos e Reparentalização

Se um pai termina enquanto seu filho continua, o kernel reparentaliza esse filho para um subreaper elegível ou para o processo init do namespace de PIDs relevante. O filho pode estar em execução, dormindo, interrompido ou tornar-se um zumbi mais tarde; “órfão” descreve a perda da relação com o pai original, não um estado de execução.

O processo adotante passa a ser responsável por coletar o status de encerramento. Gerenciadores de serviços modernos e ambientes de contêineres tornam importante não presumir que o novo pai sempre seja o PID 1 do host.

O que acontece quando um processo sobrevive a seu pai original?

Lição concluída

Você concluiu Encerramento de Processos

Agora você sabe diferenciar o fim da execução da limpeza realizada pelo pai.

  • Interprete zero como sucesso convencional e os status diferentes de zero pela documentação do programa.

  • Use a espera para coletar as informações de encerramento de um filho.

  • Reconheça um zumbi como encerrado, mas ainda não coletado.

  • Reconheça um órfão como um filho reparentalizado depois que seu pai original termina.

Salve seu progresso

Crie uma conta gratuita para salvar esta lição e continuar em qualquer dispositivo.

Criar uma conta gratuita
Próxima Lição
Voltar para Processos