30 Exemplos Úteis do Comando ‘ps’ para Monitoramento de Processos no Linux

ps (status de processos) é um utilitário nativo do Unix/Linux para visualizar informações sobre uma seleção de processos em execução em um sistema: ele lê essas informações dos arquivos virtuais no sistema de arquivos /proc. É um dos utilitários importantes para a administração do sistema, especificamente no monitoramento de processos, para ajudá-lo a entender o que está acontecendo em um sistema Linux.

Ele possui inúmeras opções para manipular sua saída, no entanto, você encontrará um pequeno número delas praticamente úteis para uso diário.

Leia também: Tudo o que você precisa saber sobre processos no Linux [Guia abrangente]

Neste artigo, veremos 30 exemplos úteis de comandos ps para monitorar processos em execução ativos em um sistema Linux.

Observe que o ps produz saída com uma linha de cabeçalho, que representa o significado de cada coluna de informação, você pode encontrar o significado de todos os rótulos na ps man page.

Listar Todos os Processos no Shell Atual

1. Se você executar o comando ps sem argumentos, ele exibirá processos para o shell atual.

$ ps 
List Current Running Processes

Imprimir Todos os Processos em Diferentes Formatos

2. Exibir todos os processos ativos em um sistema Linux em formato genérico (Unix/Linux).

$ ps -A
OR
$ ps -e
List Processes in Standard Format

3. Exibir todos os processos no formato BSD.

$ ps au
OR
$ ps axu
List Processes in BSD Format

4. Para realizar uma listagem completa de formato, adicione a flag -f ou -F.

$ ps -ef
OR
$ ps -eF
List Processes in Long List Format

Exibir Processos em Execução do Usuário

5. Você pode selecionar todos os processos de propriedade do usuário (executante do comando ps, root neste caso), digite:

$ ps -x 

6. Para exibir os processos de um usuário pelo ID de usuário real (RUID) ou nome, use a flag -U.

$ ps -fU tecmint
OR
$ ps -fu 1000
List User Processes by ID

7. Para selecionar os processos de um usuário pelo ID de usuário efetivo (EUID) ou nome, use a opção -u.Imprimir Todos os Processos em Execução como Root (ID Real e Efetivo)

$ ps -fu tecmint
OR
$ ps -fu 1000

8. O comando abaixo permite visualizar todos os processos em execução com privilégios de usuário root (ID real & efetivo) no formato de usuário.

$ ps -U root -u root 
Display Root User Running Processes

Exibir Processos em Grupo

9. Se deseja listar todos os processos de propriedade de um determinado grupo (ID de grupo real (RGID) ou nome), digite.

$ ps -fG apache
OR
$ ps -fG 48
Display Group Processes

10. Para listar todos os processos de propriedade do nome do grupo efetivo (ou sessão), digite.

$ ps -fg apache

Exibir Processos por PID e PPID

11. Você pode listar processos por PID da seguinte forma.

$ ps -fp 1178
List Processes by PID

12. Para selecionar um processo por PPID, digite.

$ ps -f --ppid 1154
List Process by PPID

13. Faça uma seleção usando uma lista de PID.

$ ps -fp 2226,1154,1146
List Processes by PIDs

Exibir Processos por TTY

14. Para selecionar processos por tty, use a flag -t da seguinte forma.

$ ps -t pts/0
$ ps -t pts/1
$ ps -ft tty1
List Processes by TTY

Imprimir a árvore de processos

15. Uma árvore de processos mostra como os processos do sistema estão vinculados entre si; processos cujos pais foram encerrados são adotados pelo init (ou systemd).

$ ps -e --forest 
List Process Tree

16. Você também pode imprimir uma árvore de processos para um determinado processo assim.

$ ps -f --forest -C sshd
OR
$ ps -ef --forest | grep -v grep | grep sshd 
List Tree View of Process

Imprimir Threads de Processos

17. Para imprimir todos os threads de um processo, use a bandeira -L, isso mostrará as colunas LWP (processo leve) e NLWP (número de processos leves).

$ ps -fL -C httpd
List Process Threads

Especificar Formato de Saída Personalizado

Usando as opções -o ou –format, o ps permite que você construa formatos de saída definidos pelo usuário, conforme mostrado abaixo.

18. Para listar todos os especificadores de formato, inclua a bandeira L.

$ ps L

19. O comando abaixo permite que você visualize o PID, PPID, nome de usuário e comando de um processo.

$ ps -eo pid,ppid,user,cmd
List Processes with Names

20. Abaixo está outro exemplo de um formato de saída personalizado mostrando grupo de sistema de arquivos, valor de nice, tempo de início e tempo decorrido de um processo.

$ ps -p 1154 -o pid,ppid,fgroup,ni,lstart,etime
List Process ID Information

21. Para encontrar um nome de processo usando seu PID.

$ ps -p 1154 -o comm=
Find Process using PID

Exibir Processos Pai e Filho

22. Para selecionar um processo específico pelo nome, use a bandeira -C, isso também mostrará todos os seus processos filhos.

$ ps -C sshd
Find Parent-Child Process

23. Encontre todos os PIDs de todas as instâncias de um processo, útil ao escrever scripts que precisam ler PIDs de uma saída padrão ou arquivo.

$ ps -C httpd -o pid=
Find All Process PIDs

24. Verifique o tempo de execução de um processo.

$ ps -eo comm,etime,user | grep httpd

A saída abaixo mostra que o serviço HTTPD está em execução há 1 hora, 48 minutos e 17 segundos.

Find Process Uptime

Resolva Problemas de Desempenho do Sistema Linux

Se o seu sistema não estiver funcionando como deveria, por exemplo, se estiver anormalmente lento, você pode realizar algumas etapas de solução de problemas do sistema da seguinte maneira.

26. Encontre os processos em execução mais importantes com maior uso de memória e CPU no Linux.

$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
OR
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
Find Top Running Processes

27. Para encerrar processos/aplicativos inativos do Linux ou qualquer processo que esteja consumindo alta CPU.

Primeiro, encontre o PID do processo ou aplicativo inativo.

$ ps -A | grep -i stress

Em seguida, use o comando kill para encerrá-lo imediatamente.

$ kill -9 2583 2584
Find and Kill a Process

Exibir Informações de Segurança

28. Mostre o contexto de segurança (especificamente para SELinux) assim.

$ ps -eM
OR
$ ps --context
Find SELinux Context

29. Você também pode exibir informações de segurança em um formato definido pelo usuário com este comando.

$ ps -eo  euser,ruser,suser,fuser,f,comm,label
List SELinux Context by Users

Realizar Monitoramento de Processos em Tempo Real Usando a Utilidade Watch

30. Por fim, uma vez que o ps exibe informações estáticas, você pode empregar a utilidade watch para realizar monitoramento de processos em tempo real com saída repetitiva, exibida a cada segundo conforme o comando abaixo (especifique um comando ps personalizado para alcançar seu objetivo).

$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'
Real-Time Process Monitoring

Importante: o ps mostra apenas informações estáticas, para visualizar saída atualizada com frequência, você pode usar ferramentas como htop; top e glances: os dois últimos são, na verdade, ferramentas de monitoramento de desempenho do sistema Linux.

Você também pode gostar de ler os seguintes artigos relacionados.

  1. Como Encontrar um Nome de Processo Usando o Número PID no Linux
  2. Encontre os principais processos em execução com maior uso de memória e CPU no Linux
  3. A Guide to Kill, Pkill, and Killall Commands to Terminate a Process in Linux
  4. Como encontrar e encerrar processos em execução no Linux
  5. Como iniciar um comando Linux em segundo plano e destacar o processo no terminal

Isso é tudo por agora. Se você tiver algum exemplo(s) útil(is) do comando ps para compartilhar (não se esqueça de explicar o que ele faz), use o formulário de comentários abaixo.

Source:
https://www.tecmint.com/ps-command-examples-for-linux-process-monitoring/