Tudo o que você precisa saber sobre processos no Linux [Guia abrangente]

Tudo o que você precisa saber sobre processos no Linux [Guia abrangente]

Neste artigo, passaremos por um entendimento básico dos processos e examinaremos brevemente como gerenciar processos no Linux usando determinados comandos.

A processo refere -se a um programa de execução; É uma instância em execução de um programa. É composto pela instrução do programa, dados lidos em arquivos, outros programas ou entrada de um usuário do sistema.

Tipos de processos

Existem fundamentalmente dois tipos de processos no Linux:

  • Processos de primeiro plano (também referido como processos interativos) - eles são inicializados e controlados por meio de uma sessão de terminal. Em outras palavras, deve haver um usuário conectado ao sistema para iniciar esses processos; Eles não começaram automaticamente como parte das funções/serviços do sistema.
  • Processos de fundo (também referidos como processos não interativos/automáticos) - são processos não conectados a um terminal; Eles não esperam nenhuma entrada do usuário.

O que é Daemons

Esses são tipos especiais de processos de fundo que começam na inicialização do sistema e continuam funcionando para sempre como um serviço; Eles não morrem. Eles são iniciados como tarefas do sistema (executadas como serviços), espontaneamente. No entanto, eles podem ser controlados por um usuário através do processo init.

Estado do processo Linux

Criação de processos no Linux

Um novo processo é normalmente criado quando um processo existente faz uma cópia exata de si mesma na memória. O processo infantil terá o mesmo ambiente que seus pais, mas apenas o número de identificação do processo é diferente.

Existem duas maneiras convencionais usadas para criar um novo processo no Linux:

  • Usando a função System () - Este método é relativamente simples, no entanto, é ineficiente e tem certos riscos de segurança significativamente.
  • Usando a função Fork () e EXEC () - Esta técnica é um pouco avançada, mas oferece maior flexibilidade, velocidade, juntamente com segurança.

Como o Linux identifica processos?

Como o Linux é um sistema multiusuário, o que significa que diferentes usuários podem estar executando vários programas no sistema, cada instância em execução de um programa deve ser identificada exclusivamente pelo kernel.

E um programa é identificado por seu ID do processo (PID) assim como os pais processam ID (PPID), portanto, os processos podem ser categorizados em:

  • Processos parentais - São processos que criam outros processos durante o tempo de execução.
  • Processos infantis - Esses processos são criados por outros processos durante o tempo de execução.

O processo init

Iniciar O processo é a mãe (pai) de todos os processos do sistema, é o primeiro programa que é executado quando o sistema Linux inicializa; Ele gerencia todos os outros processos no sistema. É iniciado pelo próprio kernel, então, em princípio.

O processo init sempre tem o ID do processo de 1. Funciona como um pai adotivo para todos os processos órfãos.

Você pode usar o comando pidof Para encontrar o ID de um processo:

# pidof Systemd # PIDOF TOP # PIDOF HTTPD 
Encontre ID do processo Linux

Para encontrar o ID do processo e o ID do processo pai do shell atual, execute:

$ echo $$ $ echo $ ppid 
Encontre ID do processo parental do Linux

Iniciando um processo no Linux

Depois de executar um comando ou programa (por exemplo, CloudCMD - CloudCommander), ele iniciará um processo no sistema. Você pode iniciar um processo de primeiro plano (interativo) da seguinte forma, ele será conectado ao terminal e um usuário pode enviar a entrada:

# CloudCMD 
Inicie o processo interativo do Linux

Trabalhos de fundo Linux

Para iniciar um processo em segundo plano (não interativo), use o & Símbolo, aqui, o processo não lê a entrada de um usuário até que seja movido para o primeiro plano.

# CloudCMD & # Jobs 
Inicie o processo Linux em segundo plano

Você também pode enviar um processo para o fundo, suspendendo -o usando [Ctrl + Z], Isso enviará o Sigstop sinal para o processo, interrompendo suas operações; fica ocioso:

# Tar -CF Backup.alcatrão /backups /* #press Ctrl+Z # empregos 

Para continuar executando o comando acima suspenso em segundo plano, use o bg comando:

# bg 

Para enviar um processo de fundo para o primeiro plano, use o FG comando junto com o trabalho de trabalho como assim:

# Jobs # FG %1 
Trabalhos de processo de fundo Linux

Você também pode gostar: como iniciar o comando linux em plano de fundo e destacar no terminal

Estados de um processo em Linux

Durante a execução, um processo muda de um estado para outro, dependendo de seu ambiente/circunstâncias. No Linux, um processo tem os seguintes estados possíveis:

  • Correndo - Aqui está em execução (é o processo atual no sistema) ou está pronto para ser executado (está esperando para ser atribuído a uma das CPUs).
  • Esperando - Nesse estado, um processo está esperando que um evento ocorra ou por um recurso do sistema. Além disso, o kernel também diferencia entre dois tipos de processos de espera; Processos de espera interrompíveis - podem ser interrompidos por sinais e processos de espera ininterruptos - estão esperando diretamente nas condições de hardware e não podem ser interrompidos por qualquer evento/sinal.
  • Parou - Nesse estado, um processo foi interrompido, geralmente recebendo um sinal. Por exemplo, um processo que está sendo depurado.
  • Zumbi - Aqui, um processo está morto, foi interrompido, mas ainda tem uma entrada na tabela de processos.

Como visualizar processos ativos no Linux

Existem várias ferramentas do Linux para visualizar/listar processos de execução no sistema, os dois comandos tradicionais e bem conhecidos são PS e principais:

1. comando ps

Ele exibe informações sobre uma seleção dos processos ativos no sistema, como mostrado abaixo:

# ps # ps -e | cabeça 
Listar processos ativos do Linux

2. Top - Ferramenta de monitoramento do sistema

Top é uma ferramenta poderosa que oferece uma visão dinâmica em tempo real de um sistema em execução, como mostrado na captura de tela abaixo:

# principal 
Listar processos de execução do Linux

Leia isto para mais melhores exemplos de uso: 12 exemplos de comando superior no Linux

3. Olhos - Ferramenta de monitoramento do sistema

olhares é uma ferramenta de monitoramento de sistema relativamente nova com recursos avançados:

# olhares 
Olhos - Monitoramento do Processo Linux

Para um guia de uso abrangente, leia -se: olhares - uma ferramenta avançada de monitoramento de sistema em tempo real para o Linux

Existem várias outras ferramentas úteis de monitoramento do sistema Linux que você pode usar para listar processos ativos, abra o link abaixo para ler mais sobre eles:

  1. 20 ferramentas de linha de comando para monitorar o desempenho do Linux
  2. 13 ferramentas de monitoramento Linux mais úteis

Como controlar processos no Linux

O Linux também possui alguns comandos para controlar processos como Kill, Pkill, PGREP e Killall, abaixo estão alguns exemplos básicos de como usá -los:

$ PGREP -U TECMINT TOP $ Kill 2308 $ PGREP -U TECMINT TOP $ PGREP -U TECMINT GLANCES $ PKILL GLANCES $ PGREP -U TECMINT GALCHamentos 
Controle processos Linux

Para aprender a usar esses comandos em profundidade, para matar/encerrar processos ativos no Linux, abra os links abaixo:

  1. Um guia para matar, Pkill e Killall Comandos para encerrar o Processess Linux
  2. Como encontrar e matar processos de corrida no Linux

Observe que você pode usá -los para matar aplicativos sem resposta no Linux quando seu sistema congela.

Enviando sinais para processos

A maneira fundamental de controlar processos no Linux é enviando sinais para eles. Existem vários sinais que você pode enviar para um processo, para visualizar todos os sinais executados:

$ kill -l 
Liste todos os sinais Linux

Para enviar um sinal para um processo, use os comandos Kill, Pkill ou PGREP que mencionamos anteriormente em. Mas os programas só podem responder aos sinais se estiverem programados para reconhecer esses sinais.

E a maioria dos sinais é para uso interno pelo sistema ou para programadores quando eles escrevem código. Os seguintes são sinais úteis para um usuário do sistema:

  • SIGHUP 1 - enviado para um processo quando seu terminal de controle é fechado.
  • SIGINT 2 - enviado a um processo por seu terminal de controle quando um usuário interrompe o processo pressionando [Ctrl+C].
  • Sigquit 3 - enviado a um processo se o usuário enviar um sinal de desvio [Ctrl+D].
  • Sigkill 9 - Esse sinal termina imediatamente (mata) um processo e o processo não executará nenhuma operações de limpeza.
  • Sigterm 15 - Este é um sinal de terminação do programa (o assassinato enviará isso por padrão).
  • Sigtstp 20 - enviado a um processo por seu terminal de controle para solicitar que ele pare (parada do terminal); iniciado pelo usuário pressionando [Ctrl+Z].

A seguir, são apresentados exemplos de comandos de matar para matar o aplicativo Firefox usando seu PID, uma vez que ele congele:

$ pidof Firefox $ Kill 9 2687 ou $ Kill -Kill 2687 ou $ Kill -Sigkill 2687 

Para matar um aplicativo usando seu nome, use Pkill ou Killall Like So:

$ pkill firefox $ killall firefox 

Mudança de prioridade do processo Linux

No sistema Linux, todos os processos ativos têm uma prioridade e um bom valor de bom. Processos com maior prioridade normalmente terão mais tempo da CPU do que processos de prioridade mais baixa.

No entanto, um usuário do sistema com privilégios root pode influenciar isso com o legal e Renice comandos.

A partir da saída do comando superior, a NI mostra o processo de bom valor:

$ top 
Listar processos de execução do Linux

Use o legal comando para definir um bom valor para um processo. Lembre -se de que os usuários normais podem atribuir um bom valor de zero a 20 aos processos que eles possuem.
Somente o usuário raiz pode usar valores agradáveis ​​negativos.

Para Renice a prioridade de um processo, use o Renice Comando o seguinte:

$ Renice +8 2687 $ Renice +8 2103 

Confira nossos artigos úteis sobre como gerenciar e controlar processos Linux.

  1. Gerenciamento de processos Linux: inicialização, desligamento e tudo mais
  2. Encontre os 15 principais processos por uso da memória com 'top' no modo em lote
  3. Encontre os principais processos de execução por memória mais alta e uso da CPU no Linux
  4. Como encontrar um nome de processo usando o número PID no Linux

É tudo por agora! Você tem alguma dúvida ou idéias adicionais, compartilhe -as conosco através do formulário de feedback abaixo.