Linux / Comando ps: consultar processos, PIDs e estados

ps mostra um retrato dos processos selecionados no momento da consulta. Use o identificador de processo (PID), o identificador do pai (PPID), o usuário, o estado e o comando para investigar uma tarefa. A presença de um processo na lista não comprova que uma aplicação responde corretamente, e a saída não é atualizada depois que o comando termina.

Sintaxe e implementação

ps [opções]

Os exemplos a seguir se referem ao ps do procps-ng em Linux. Confira ps --version, ps --help all e man ps na máquina de destino. Há implementações de ps com opções e campos diferentes; o nome do comando, sozinho, não garante compatibilidade.

O procps-ng aceita opções Unix com hífen, opções BSD sem hífen e opções longas GNU com dois hifens. A grafia faz parte da seleção e do formato: não acrescente um hífen a uma opção BSD por analogia.

Consultar a seleção padrão

Comece pela consulta sem opções:

ps

No comportamento padrão documentado do procps-ng, são selecionados processos com o mesmo usuário efetivo e o mesmo terminal de quem executa ps. Portanto, essa lista não representa todos os processos do sistema. As colunas usuais são PID, TTY, TIME e CMD.

TTY identifica o terminal associado. TIME é o tempo de CPU acumulado, não o tempo de relógio desde o início do processo. Confira sempre o cabeçalho: o conjunto de colunas pode mudar conforme as opções e a configuração de formato.

Ampliar a seleção com -ef

Para selecionar todos os processos no contexto da consulta e usar o formato completo:

ps -ef

A opção -e amplia a seleção, enquanto -f escolhe o formato completo. No procps-ng, ele inclui usuário, PID, PPID e comando com argumentos, além de outros campos. O PPID ajuda a relacionar um processo ao pai observado naquele momento; não confunda a presença de uma linha com uma confirmação da saúde do serviço.

Outra combinação comum é ps aux, em estilo BSD: a e x ampliam a seleção e u escolhe o formato orientado ao usuário, com informações de recursos. Evite escrever ps -aux como se fosse equivalente: o manual descreve a ambiguidade dessa forma. O %CPU de ps é calculado em relação ao tempo de vida do processo, não como uma medição instantânea do último intervalo.

Selecionar um PID e definir as colunas

O número 1234 é um exemplo. Substitua-o pelo PID que deseja consultar:

ps -p 1234 -o pid,ppid,user,stat,cmd

O argumento -p seleciona o processo e -o define os campos e sua ordem. Aqui, pid e ppid são os identificadores, user é o usuário, stat é o estado com indicadores adicionais e cmd mostra o comando com argumentos. Se o PID não existir ou já tiver terminado, não haverá uma linha de dados correspondente; examine também o diagnóstico e o status do comando.

Para uma consulta de PID específica, não acrescente -e esperando manter o filtro estreito. No procps-ng, as seleções normalmente se somam: combinar uma seleção de todos os processos com uma seleção de PID pode ampliar o resultado. A escolha de colunas por -o, por sua vez, não escolhe processos.

Examinar o próprio shell e ler STAT

Num shell Bash interativo, $$ fornece o PID do shell. O bloco usa esse valor, sem depender de um PID fixo:

ps -o pid,ppid,stat,comm -p $$

Exemplo ilustrativo; os identificadores e o estado variam conforme a sessão:

    PID    PPID STAT COMMAND
   4321    4100 Ss   bash

Nessa linha, 4321 é o PID, 4100 é o PPID e bash é o nome do comando. O campo comm mostra o nome do executável, enquanto cmd, usado no exemplo anterior, mostra a linha de comando com argumentos quando disponível. Não use o cabeçalho COMMAND, sozinho, para concluir qual dessas informações foi selecionada.

Em Ss, S significa espera interrompível por um evento e s indica que o processo é líder de sessão. São informações diferentes: a primeira letra mostra o estado principal; as seguintes podem acrescentar propriedades.

Outros estados úteis são R, executando ou pronto para executar; D, espera não interrompível, geralmente relacionada a entrada e saída; T, parado por controle de tarefas; e Z, processo terminado cujo estado ainda não foi recolhido pelo pai. Uma linha Z não significa que o programa continua realizando seu trabalho normal. Um + adicional indica participação no grupo de processos em primeiro plano.

Na verificação disponível, o Git para Windows forneceu ps (Cygwin) 3.6.7, com Bash 5.3.9. As consultas ps e ps -ef terminaram com sucesso nessa implementação, mas os dois comandos com -o falharam com opção desconhecida. A análise de sintaxe do Bash passou nos quatro blocos; isso não verifica os campos nem os estados do procps-ng em Linux. A saída Ss acima é ilustrativa, não um resultado observado nesse teste.

Opções de seleção e de formato

Opção Papel no procps-ng
-e Seleciona todos os processos no contexto da consulta.
-f Escolhe o formato completo, incluindo argumentos do comando.
-p PID Seleciona o PID indicado; considere os demais critérios usados na mesma chamada.
-o campos Escolhe as colunas e a ordem de apresentação.
aux Combina seleção ampla e formato orientado ao usuário, no estilo BSD sem hífen.

Conferir o contexto antes de agir

Uma linha pode desaparecer logo após a consulta, e um PID pode ser reutilizado posteriormente. Antes de enviar um sinal ou realizar outra ação sobre a tarefa, consulte novamente PID, usuário, comando e contexto. Ps apenas consulta informações; os exemplos acima não encerram nem modificam processos.

A busca ps | grep nome pode incluir o próprio processo grep e casar texto em argumentos, além do nome pretendido. Para localizar PIDs por nome, o manual de pgrep descreve a consulta por padrão e o uso de -x para exigir correspondência do nome inteiro; -f muda a busca para a linha de comando. Esses critérios não são intercambiáveis, e o resultado ainda precisa ser conferido.

Se o comando ou usuário aparecer cortado, confira o formato e a largura da saída antes de interpretar o trecho como o valor completo. O manual do procps-ng permite ajustar colunas com -o e ampliar a saída com -w. O uso dessas opções precisa ser compatível com a implementação instalada.

Pergunta frequente

Qual é a diferença entre ps e top?

Ps produz uma consulta e termina. Top atualiza a apresentação periodicamente para acompanhar mudanças. Compare o significado dos campos e o intervalo de medição antes de tratar seus números de CPU como equivalentes.

Documentação

O manual de ps do procps-ng e a página de ps publicada pelo Debian descrevem as seleções, os campos de saída e os estados usados nesses exemplos.