Quer saber quais processos estão em execução no seu sistema? Aqui está como obter detalhes dos processos em execução no Linux.
Como administrador de sistema, pode ser necessário verificar todos os processos que estão a consumir os recursos do seu computador.
Para obter a lista de todos os processos em execução, execute o comando ps com as flags de argumento aux da seguinte forma:
ps aux
Isto irá fornecer uma lista de todos os processos em execução por todos os utilizadores no seu sistema. Pode utilizar o comando grep para filtrar os processos utilizando um padrão.
Vamos ver como utilizá-lo em detalhe. Também vou partilhar outros comandos para mostrar os processos em execução no Linux.
Comando ps
O comando ps é o comando padrão que a maioria dos administradores de sistemas utiliza num sistema operativo semelhante ao UNIX.
Existem várias opções que pode utilizar com o comando ps, mas o conjunto de opções a utilizar quando deseja obter uma lista de todos os processos é aux.
Portanto, executar o seguinte comando mostrar-me-á todos os processos no meu sistema:
ps -A
Ou, você pode usar a sintaxe no estilo BSD, que ainda está disponível no ps do GNU.
ps aux
Vamos analisar mais detalhadamente…
a: Mostrar informações sobre os processos de outros utilizadores, bem como dos processos do próprio utilizador (se os processos estiverem ligados a terminais, ou seja, os daemons são excluídos). u: Apresentar num formato legível pelo utilizador. x: Incluir processos que não estão ligados a um terminal, ou seja, incluir daemons. Isso irá fornecer uma lista incrivelmente longa de processos em execução que estavam a ser executados no momento da execução do comando ps.
A maioria das pessoas, incluindo eu, redirecciona esta saída para o comando grep para encontrar uma agulha no palheiro.
ps aux | grep zabbix
zabbix 192 0.0 0.6 21612 3560 ? S Sep15 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
zabbix 196 0.0 0.5 21612 2680 ? S Sep15 0:37 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix 197 0.0 0.9 21740 5240 ? S Sep15 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix 198 0.0 0.9 21740 5240 ? S Sep15 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix 199 0.0 0.9 21740 5240 ? S Sep15 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix 200 0.0 1.0 21740 5496 ? S Sep15 0:10 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root 8401 0.0 0.2 3324 1536 pts/3 S+ 20:09 0:00 grep zabbix
Note como o comando grep também foi incluído na saída. Isso ocorre porque ele também possui ‘alacritty’ no nome do processo (como argumento).
Tenha cuidado com esse comportamento [de o grep ser incluído na saída] se você o utilizar num script.
Vamos ver outros comandos do Linux que permitem visualizar processos em execução.
Comando pgrep
O comando pgrep aceita um padrão a ser correspondido e, se houver processos que correspondam ao padrão fornecido, um ID de processo (PID) é retornado para a saída padrão.
Abaixo está a sintaxe a ser usada para o comando pgrep:
pgrep <padrão>
Vamos dizer, por exemplo, que eu quero ver os PIDs de qualquer processo com o nome ‘alacritty’. Eu usaria o seguinte comando para isso:
$ pgrep alacritty
4653
4974
6287
8241
Quando executei esse comando, obtive quatro PIDs, indicando que quatro processos correspondem ao padrão ‘alacritty’ e seus PIDs foram exibidos na saída padrão.
Você também pode usar a opção -u (em oposição a u) juntamente com o comando ps para especificar um usuário específico e filtrar os resultados, tornando mais fácil a gestão.
Pode haver vários utilizadores no meu computador a usar o Vim, o utilizador pratham e o root. Se eu quiser filtrar os processos e só quiser ver se o pratham tem um processo Vim ativo ou não, aqui está como descobrir:
$ ps -u pratham | grep vim
516525 pts/2 SNl+ 0:00 nvim
Comando pstree
O comando “pstree”, como o nome sugere, mostra uma visualização hierárquica dos processos pai e dos processos filhos.
Quando executado, o comando “pstree” mostrará uma saída com uma estrutura semelhante a uma árvore de cima para baixo dos processos, como mostrado na imagem acima.
Você também pode observar que o PID 1 é o systemd, o que indica que o meu sistema Linux usa o systemd.
Embora não forneça muitas informações sobre PID, utilizador, hora de início, utilização da CPU, etc., o comando “pstree” não é exatamente um comando de referência. No entanto, ele ainda ajuda a identificar a que processo filho pertence a que processo pai.
Usar um monitor de processos
Qualquer sistema semelhante ao UNIX terá uma ferramenta que pode ser usada para monitorizar a utilização de recursos físicos, como CPU, RAM, Rede, etc.
Algumas ferramentas que as pessoas preferem e que são amplamente utilizadas incluem top, atop, htop e btop.
Aqui está a saída do comando top em execução no meu computador. Ele mostra informações como tarefas totais, utilização da CPU e da memória.
Conclusão
Este artigo trata de como é possível visualizar os processos em execução no seu computador. Existem várias formas de fazê-lo, mas o método mais amplamente preferido é o uso do comando ‘ps’.
Para uma visualização interativa dos processos em execução, classificados por uso de CPU, uso de RAM, entre outros critérios, é possível utilizar um monitor de sistema como o ‘top’ ou o ‘htop’.