Como verificar se um processo está em execução no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá habilidades Linux fundamentais para gerenciar e monitorar processos. Você explorará como listar todos os processos em execução no seu sistema usando o comando ps aux, que fornece um instantâneo dos processos atuais com informações detalhadas como usuário, PID, uso de CPU e memória.

Além disso, você descobrirá como encontrar eficientemente processos específicos usando o comando pgrep e obterá insights sobre a atividade de processos em tempo real e o consumo de recursos utilizando o comando top. Essas técnicas são essenciais para a administração de sistemas, solução de problemas e compreensão do desempenho do sistema.

Listar processos em execução com ps aux

Nesta etapa, você aprenderá como visualizar os processos atualmente em execução no seu sistema Linux usando o comando ps. Processos são simplesmente programas que estão em execução. Entender como listar e identificar processos é uma habilidade fundamental na administração e solução de problemas de sistemas Linux.

O comando ps é usado para relatar um instantâneo dos processos atuais. Quando usado com certas opções, ele pode fornecer muitas informações detalhadas.

Vamos usar o comando ps com as opções aux. Essas opções são comumente usadas juntas para exibir todos os processos em execução no sistema em um formato amigável.

  • a: Exibe todos os processos.
  • u: Exibe o usuário e o proprietário do processo.
  • x: Exibe processos que não possuem um terminal de controle (útil para ver processos em segundo plano).

Abra seu terminal se ele ainda não estiver aberto. Você deve estar no diretório ~/project por padrão.

Digite o seguinte comando e pressione Enter:

ps aux

Você verá uma longa lista de processos, semelhante a esta (a saída exata variará):

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.1  16840  9880 ?        Ss   Jul23   0:01 /sbin/init
root           2  0.0  0.0      0     0 ?        S    Jul23   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   Jul23   0:00 [rcu_gp]
...
labex      12345  0.1  0.5 123456 54321 pts/0    Ss   HH:MM   0:00 /usr/bin/zsh
labex      12367  0.0  0.1  21000  5000 pts/0    R+   HH:MM   0:00 ps aux
...

Vamos detalhar as colunas que você vê:

  • USER: O usuário que possui o processo.
  • PID: O ID do Processo (Process ID), um número único para cada processo em execução.
  • %CPU: A porcentagem de tempo de CPU que o processo está usando.
  • %MEM: A porcentagem de memória física que o processo está usando.
  • VSZ: Virtual Set Size, a quantidade total de memória virtual usada pelo processo.
  • RSS: Resident Set Size, a quantidade de memória física usada pelo processo.
  • TTY: O terminal de controle para o processo (se houver). ? significa que não há terminal de controle.
  • STAT: O status do processo (por exemplo, R para em execução (running), S para dormindo (sleeping), Z para zumbi (zombie)).
  • START: O tempo em que o processo foi iniciado.
  • TIME: O tempo cumulativo de CPU que o processo usou.
  • COMMAND: O comando que iniciou o processo.

Percorrer essa saída pode ser avassalador. Na próxima etapa, você aprenderá como filtrar essa saída para encontrar processos específicos.

Clique em Continuar para prosseguir.

Encontrar um processo específico usando pgrep

Na etapa anterior, você viu que ps aux pode produzir muita saída. Frequentemente, você só quer encontrar um processo específico. O comando pgrep foi projetado para essa finalidade. Ele pesquisa processos com base em seus nomes e retorna seus IDs de Processo (PIDs).

A sintaxe básica para pgrep é pgrep [opções] padrão. O padrão (pattern) é geralmente o nome do processo que você está procurando.

Vamos tentar encontrar o PID do processo zsh, que é o shell que você está usando atualmente no terminal.

Digite o seguinte comando e pressione Enter:

pgrep zsh

Você deve ver um ou mais números impressos no terminal. Estes são os PIDs dos processos zsh em execução.

12345

(O número exato será diferente para você).

Se você quiser ver o comando completo associado ao PID encontrado por pgrep, você pode combiná-lo com o comando ps. A opção -p de ps permite que você especifique um PID.

Vamos encontrar o comando completo para o processo zsh usando seu PID. Primeiro, execute pgrep zsh novamente para obter o PID atual. Vamos supor que o PID seja 12345 para este exemplo (substitua 12345 pelo PID real que você obtiver).

Agora, use ps -p seguido pelo PID:

ps -p 12345

Você verá uma saída semelhante a esta:

    PID TTY          TIME CMD
  12345 pts/0    00:00:00 zsh

Isso confirma que o PID 12345 corresponde ao comando zsh.

pgrep é uma maneira rápida de encontrar o PID de um processo quando você sabe seu nome. Isso é particularmente útil quando você precisa do PID para outros comandos, como matar um processo (o que você aprenderá em um laboratório futuro).

Clique em Continuar para passar para a próxima etapa.

Monitorar detalhes do processo com o comando top

Nesta etapa, você aprenderá sobre o comando top, que fornece uma visão dinâmica e em tempo real dos processos em execução no seu sistema. Enquanto ps aux fornece um instantâneo, top atualiza continuamente, mostrando quais processos estão usando mais CPU e memória.

O comando top é muito útil para monitorar o desempenho do sistema e identificar processos que podem estar consumindo recursos excessivos.

Digite o seguinte comando no seu terminal e pressione Enter:

top

Seu terminal mudará para exibir uma lista de processos em constante atualização. A saída se parece com isto:

top - HH:MM:SS up  X days, HH:MM,  X users,  load average: X.XX, X.XX, X.XX
Tasks: XXX total,   X running, XXX sleeping,   X stopped,   X zombie
%Cpu(s):  X.X us,  X.X sy,  X.X ni, XX.X id,  X.X wa,  X.X hi,  X.X si,  X.X st
MiB Mem :  XXXX.X total,  XXXX.X free,  XXXX.X used,  XXX.X buff/cache
MiB Swap:  XXXX.X total,  XXXX.X free,  XXXX.X used. XXXX.X avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  12345 labex     20   0  123456  54321  32100 S   0.1   0.5   0:00.10 zsh
  12367 labex     20   0   21000   5000   3000 R   0.0   0.1   0:00.05 top
  ...

Vamos analisar as áreas-chave da saída do top:

  • Área de Resumo (Topo): Esta seção mostra informações de resumo do sistema, incluindo:

    • Hora atual e tempo de atividade do sistema (uptime).
    • Número de usuários conectados.
    • Média de carga (número médio de processos esperando para serem executados nos últimos 1, 5 e 15 minutos).
    • Número total de tarefas (processos) e seus estados (em execução, dormindo, parado, zumbi).
    • Detalhamento do uso da CPU (usuário, sistema, ocioso, etc.).
    • Uso da memória (total, livre, usado, buffer/cache).
    • Uso do espaço de troca (swap).
  • Área da Lista de Processos (Inferior): Esta seção lista os processos individuais, classificados por padrão pelo uso da CPU. As colunas são semelhantes a ps aux, mas top as atualiza em tempo real. As colunas principais incluem:

    • PID: ID do processo.
    • USER: Proprietário do processo.
    • %CPU: Porcentagem de uso da CPU.
    • %MEM: Porcentagem de uso da memória.
    • COMMAND: O nome do comando.

Enquanto top estiver em execução, você pode interagir com ele usando várias teclas:

  • Pressione q para sair do top.
  • Pressione M para classificar a lista de processos por uso de memória.
  • Pressione P para classificar a lista de processos por uso da CPU (este é o padrão).
  • Pressione k para matar um processo (você será solicitado a inserir o PID). Tenha cuidado com isso!

Passe um momento observando os processos e como o uso da CPU e da memória muda. Você verá o próprio processo top perto do topo da lista porque ele está usando ativamente a CPU para atualizar a exibição.

Quando terminar de explorar o top, pressione q para sair e retornar ao seu prompt de terminal normal.

Clique em Continuar para concluir esta etapa e o laboratório.

Resumo

Neste laboratório, você aprendeu técnicas fundamentais para verificar se um processo está em execução no Linux. Você começou usando o comando ps aux para listar todos os processos em execução no sistema, compreendendo as várias colunas como USER, PID, %CPU e %MEM, que fornecem um instantâneo da atividade do processo.

Em seguida, você explorou como encontrar eficientemente um processo específico usando o comando pgrep, que pesquisa processos com base em seus nomes ou outros atributos e retorna seu ID de Processo (PID). Finalmente, você aprendeu a monitorar os detalhes do processo em tempo real usando o comando top, que fornece uma visão dinâmica do uso de recursos do sistema e estatísticas de processos individuais, permitindo que você observe o consumo de CPU e memória.