Comandos ps e pstree – Visualizando processos e threads no sistema Linux
Comandos ps e pstree – Visualizando processos e threads no sistema Linux
Comando ps
O comando ps gera um instantâneo dos processos atuais no terminal e permite mostrar informações sobre uma seleção dos processos ativos.
Sintaxe
ps [opções]
Há três estilos de opções disponíveis:
1. Opções padrão do Unix: podem ser agrupadas e são precedidas por um hífen.
# ps -ax
2. Opções BSD: podem ser agrupadas e não são precedidas por um hífen.
# ps ax
3. Opções longas GNU: Não são agrupadas e são precedidas por dois hífens.
# ps --all
Podemos misturar opções de tipos diferentes livremente, porém tomando cuidado pois conflitos podem ocorrer.
Opções principais do comando ps
- -a Mostra processos de propriedade de outros usuários e vinculados a um terminal
- -e Selecionar todos os processos. Idêntico a -A
- -l Formato longo, incluindo prioridade, PPID, etc.
- -r Mostrar apenas processos em execução
- -u Formato de usuário, com nomes de usuário e hora de início dos processos
- -x Inclui processos sem terminal de controle (daemons, GUI.)
- -U usuário Exibe processos de propriedade do usuário.
- -L “Lightweight Process” / LWP, mostra os threads associados a um processo específico.
- -T Mostrar threads, com coluna SPID
Campos comuns exibidos nas saídas do comando:
- USER: Usuário proprietário do processo
- PID: ID do processo
- %CPU: % dos recursos de CPU que o processo está usando
- %MEM: % da memória real que o processo está usando
- VSZ: Tamanho virtual do processo em KiB
- RSS: Resident Set Size (Total de memória usada pelo processo e seus arquivos)
- TTY: Identificador do terminal de controle
- STAT: Estado de processo atual
- START: Horário em que o processo foi iniciado
- COMMAND: Nome do comando e argumentos.
- LWP: ightweight Process (Thread)
Estado dos processos retornados por ps:
- R = Executável
- S = Dormente
- Z = Zumbi
- D = Espera no disco
- T = Rastreado ou interrompido
Flags adicionais:
- W = Processo paginado em disco
- < = O processo tem uma prioridade maior que a normal
- N = O processo tem uma prioridade menor que a normal
- L = Algumas páginas são bloqueadas no núcleo (kernel)
Sendo que:
- Executável: O processo pode ser executado (quando houver tempo de CPU disponível)
- Dormente: O processo está aguardando algum recurso
- Zumbi: O processo está tentando se destruir
- Parado: O processo é suspenso (não há permissão para ser executado).
Exemplos
1. Mostrar todos os processos:
# ps ax
A listagem continua, apenas uma parte é mostrada na figura acima. As opções ax nos trazem o PID, TTY, Status, Tempo de Execução e Comando que originou o processo.
2. Mostrar todos os processos com informações detalhadas:
# ps aux
3. Mostrando apenas os processos do usuário fabio:
# ps -f -u fabio
4. Mostrar os processos com informações técnicas adicionais, como PPID (PID do processo pai) , Flags associadas (F), Valor Nice (NI), prioridade do processo (PRI) e função do kernel no qual o processo está dormente (WCHAN):
# ps lax
5. Verificar o processo associado e informações gerais de um programa em execução, como o navegador web Iceweasel. Para isso filtraremos a saída do comando ps com o grep:
# ps aux | grep iceweasel
Note que o PID do processo principal do Iceweasel é 4031. O PID 4087 mostrado é do próprio processo grep que usamos para filtrar a saída do comando ps.
6. Mostrar os threads associados a um processo específico. Por exemplo, suponhamos que o navegador Iceweasel esteja rodando no momento. Podemos descobrir seu PID (como fizemos no exemplo anterior) e depois os threads associados usando o comando ps com a opção -L (“Lightweight Process”, LWP):
# ps -p 4031 -L
Note a grande quantidade de threads sendo executadas pelo processo de PID 4031. Cada thread possui seu próprio TID (Thread identification), que é o número que aparece na segunda coluna da listagem acima.
7. Classificar os processos em ordem de utilização da CPU (“pcpu”):
# ps aux --sort=-pcpu
Veja que os valores na coluna %CPU estão em ordem decrescente.
8. Mostrar apenas colunas especificadas, como por exemplo, PID, % de uso da cpu e % de uso da memória RAM:
# ps -e -o pid,pcpu,pmem
9. Mostrar o PID, usuário e tempo de execução do processo – que não é exibido por padrão. Usaremos o parâmetro etime (Elapsed Time / Tempo Decorrido):
# ps -e -o pid,user,etime
10. Mostrar processos com informações detalhadas, e threads na coluna SPID:
# ps aux -T
Comando pstree
O comando pstree permite exibir uma lista hierárquica de processos no formato de árvore.
Sintaxe
pstree [opções]
Exemplos
1 – Inclui PIDs na saída:
# pstree -p
Exibe a subárvore de processos sob o processo de PID 3670:
# pstree 100
As Threads são exibidas entre chaves nas saídas desses comandos.
Há muitos outros comandos que podemos usar para verificar e gerenciar processos, como o top, nice, renice, htop, entre outros. Os estudaremos em outros tutoriais.
Enquanto isso, assista a um vídeo de nosso canal no YouTube sobre o assunto:
Escreva um comentário