Comando ps – informações sobre processos em execução no Linux
Comando ps – informações sobre processos em execução no Linux
O comando ps (process status) é usado no Linux para exibir informações sobre os processos em execução no sistema. Ele é uma ferramenta bastante útil para monitoramento, análise e solução de problemas relacionados a processos no sistema operacional – por exemplo, processos travados ou que estão consumindo muito tempo de processamento da CPU.
Sintaxe básica do ps
A sintaxe básica do comando ps é a seguinte:
$ ps [opções]
Se não forem usadas opções, o comando ps exibe os processos pertencentes ao usuário que executou o comando no terminal atual. A seguir, vamos conhecer as principais opções disponíveis para o ps.
Opções comuns do comando ps
Vejamos algumas das opções mais comuns utilizadas em conjunto com o comando ps no Linux:
1. ps (sem opções)
Exibe uma lista dos processos em execução no terminal atual:
$ ps
Saída típica:
PID TTY TIME CMD
1234 pts/0 00:00:01 bash
2345 pts/0 00:00:00 ps
Nesta saída, temos quatro colunas que trazem as seguintes informações:
- PID: O ID do processo.
- TTY: Terminal associado ao processo.
- TIME: Tempo de CPU utilizado.
- CMD: Comando executado.
A coluna TTY (abreviação de “Teletype“), se refere a terminais físicos ou terminais de console usados para interagir com os sistemas de computadores.
O valor que aparece, pts, é uma abreviação de “pseudo-terminal slave“. Se refere a terminais virtuais criados dinamicamente quando abrimos terminais em emuladores gráficos, como o terminal do gnome (gnome-terminal), o xterm, ou ainda quando realizamos conexões remotas via SSH a um sistema Linux.
Ou seja, são terminais virtuais conectados ao sistema por meio de um programa que emula um terminal. Cada terminal virtual (isso inclui até mesmo abas em um emulador gráfico) recebe um código identificador como pts/0, pts/1, etc.
O valor tty aparece se estivermos usando um terminal físico ou console, ao passo que o valor pts aparece quando usamos um emulador de terminal gráfico ou nos conectamos via SSH.
Já a coluna TIME indica o tempo total acumulado que o processo usou a CPU desde o momento em que foi iniciado. Ela é apresentada no formato HH:MM e inclui o tempo gasto em execução ativa ou em funções do sistema.
2. ps -e ou ps -A
Lista todos os processos em execução no sistema. Exemplo:
$ ps -e
Saída típica:
1 ? 00:00:05 systemd
2 ? 00:00:00 kthreadd
434 ? 00:00:03 sshd
567 ? 00:00:01 cron
Com esta opção, alguns processos podem trazer o símbolo ? na coluna TTY, o que significa que o processo não está associado a nenhum terminal. Isso ocorre, por exemplo, com processos de sistema, da inicialização ou serviços em segundo plano (daemons), que não possuem interação direta com o usuário.
3. ps -f
Exibe informações detalhadas sobre os processos pertencente ao usuário: $ ps -f
Saída típica:
UID PID PPID C STIME TTY TIME CMD
user 1234 1200 0 10:00 pts/0 00:00:01 bash
user 2345 1234 0 10:05 pts/0 00:00:00 ps -f
Além das quatro colunas exibidas no exemplo anterior, com esta opção também são exibidas as seguintes informações:
- UID: Nome do usuário que iniciou o processo.
- PPID: ID do processo pai.
- C: Utilização de CPU.
- STIME: Hora de início do processo.
A coluna C indica a prioridade relativa do processo em relação ao uso da CPU. Ou seja,representa a utilização de CPU como uma percentagem aproximada do tempo gasto pelo processo na execução de tarefas durante um intervalo curto (geralmente desde o último reinício do sistema).
Essa métrica é volátil, pois reflete apenas o comportamento recente do processo. É útil para identificar processos que estão consumindo muita CPU em tempo real.
Se a coluna C exibir o valor 0, significa que o processo não está utilizando significativamente a CPU no momento. Se exibir 1 ou um valor maior, significa que o processo está consumindo mais ciclos de CPU.
4. ps aux
Lista todos os processos com informações detalhadas, incluindo os processos que foram iniciados por outros usuários. Essa é uma das formas mais usadas do comando:
$ ps aux
Saída típica:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
user 1234 0.0 0.1 123456 2345 pts/0 S 10:00 0:01 bash
root 1 0.1 0.2 345678 5678 ? Ss 09:50 0:05 init
Agora são exibidas também as seguintes informações:
- %CPU: Percentual de uso da CPU.
- %MEM: Percentual de uso da memória.
- VSZ: Tamanho virtual do processo (em KB).
- RSS: Memória física usada pelo processo.
- STAT: Estado do processo
- COMMAND: Comando que iniciou o processo.
A coluna STAT exibe o status de cada processo no sistema. Este status indica o estado atual do processo, ou seja, o que ele está fazendo ou aguardando naquele momento. Os principais status são:
- Em execução (R): O processo está ativo e sendo executado pela CPU.
- Dormindo (S) – Dormindo “interrompível”. O processo está em um estado de espera interrompível, ou seja, ele está inativo, mas pode ser despertado por eventos como entrada/saída (I/O).
- Dormindo em espera (D) – Dormindo “não interrompível”. O processo está em um estado de espera não interrompível, ou seja, ele está inativo, mas não pode ser imediatamente interrompido ou finalizado. Por exemplo, ele está aguardando diretamente uma interação de hardware, como com um disco rígido, e não pode ser interrompido até que a operação termine.
- Zumbi (Z): O processo foi finalizado, mas ainda está listado na tabela de processos porque seu processo pai ainda não leu o código de saída (não realizou a chamada wait() para coletar o status de término.)
- Parado (T): O processo está suspenso ou parado, geralmente devido a um sinal, como o SIGSTOP ou SIGTSTP (enviado pelo atalho Ctrl+Z no terminal). Geralmente ocorre quando o processo foi explicitamente suspenso pelo usuário ou pelo sistema.
- I (Idle): O processo está inativo e não consumindo recursos.
- < (Alta prioridade): O processo está sendo executado com uma prioridade mais alta que o normal.
- N (Baixa prioridade): O processo está sendo executado com uma prioridade mais baixa que o normal.
Também há alguns status adicionais exibidos nessa coluna:
- s (Processo líder): Indica que o processo é um líder de sessão, ou seja, o primeiro processo de uma sessão, como em uma nova sessão de terminal.
- l (Em thread de nível baixo): O processo está multithreaded (ou seja, utiliza várias threads). Este status aparece quando o processo está rodando em modo “nível baixo” (lightweight) com múltiplas threads. comum em processos que fazem uso intensivo de threads, como navegadores Web e a JVM.
- + (No grupo do terminal atual): Processo que está em execução no grupo de processos em primeiro plano no terminal atual (foreground group), como processos que estão diretamente associados ao terminal que estamos usando no momento.
Já a coluna VSZ (Virtual Size) indica o tamanho virtual do processo, que representa a quantidade total de memória virtual que o processo está utilizando, incluindo a memória usada pelo código e dados do processo, bibliotecas compartilhadas, memória alocada mas não necessariamente usada e memória mapeada. Essa coluna NÃO representa a memória RAM física usada pelo processo (que é o RSS, Residente Set Size).
5. ps -u [usuário]
Exibeir os processos pertencentes a um usuário específico:
$ ps -u root
6. ps -p [PID]
Exibir informações sobre um processo específico pelo seu PID (número de identificação do processo):
$ ps -p 1234
7. ps –forest
Mostrar a hierarquia dos processos (relação entre processos pai e filhos) do usuário atual:
$ ps --forest
8. ps -eo
Permite personalizar os campos a serem exibidos ao executar o ps. Por exemplo, para mostrar apenas o PID e o comando:
$ ps -eo pid,cmd
Vejamos mais alguns exemplos de uso do comando ps no terminal do Linux.
Exemplos do comando ps
Exemplo 1: Encontrar um processo pelo nome
Podemos usar o comando grep junto com o ps para encontrar processos específicos. Por exemplo, para exibir informações sobre o processo do bash:
$ ps aux | grep bash
Exemplo 2: Monitorar o uso de memória de todos os processos
$ ps -eo pid,comm,%mem --sort=-%mem
Este comando exibe o PID, o nome do comando e o uso de memória dos processos, ordenados do maior para o menor uso de memória.
Exemplo 3: Ver os 5 processos que estão consumindo mais CPU no sistema
$ ps -eo pid,comm,%cpu --sort=-%cpu | head -n 6
Conclusão
Neste tutorial vimos como usar o comando ps para descobrir informações sobre processos em um ambiente Linux, incluindo processos em execução, processos parados ou travados e outros.
Muitas outras ferramentas estão disponíveis para gerenciamento de processos no Linux, e vamos estudar mais algumas delas nos próximos tutoriais, como os utilitários top e htop, entre outras.
Escreva um comentário