O básico: ps aux
O comando ps exibe um snapshot dos processos em execução. A combinação mais usada é ps aux, que mostra todos os processos de todos os usuários no formato BSD.
ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 169576 13280 ? Ss 08:01 0:02 /usr/lib/systemd/systemd
root 2 0.0 0.0 0 0 ? S 08:01 0:00 [kthreadd]
www-data 1842 0.2 1.5 214532 62104 ? S 08:03 0:15 /usr/sbin/apache2 -k start
mysql 2103 1.3 5.2 1298400 210048 ? Sl 08:03 1:42 /usr/sbin/mysqld
root 5921 0.0 0.0 8536 4096 pts/0 R+ 09:45 0:00 ps aux
As colunas mais importantes: PID (identificador do processo), %CPU e %MEM (uso de recursos), STAT (estado) e COMMAND (comando executado).
Formato POSIX: ps -ef
A sintaxe POSIX usa traço e mostra o PPID (processo pai), útil para entender hierarquias.
ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:01 ? 00:00:02 /usr/lib/systemd/systemd
root 412 1 0 08:01 ? 00:00:00 /usr/sbin/sshd -D
www-data 1842 1830 0 08:03 ? 00:00:15 /usr/sbin/apache2 -k start
Saída personalizada com -eo
Para selecionar exatamente quais colunas exibir, use -eo combinado com --sort.
# Top 10 processos por uso de CPU
ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -11
PID COMMAND %CPU %MEM
2103 mysqld 1.3 5.2
3487 node 0.8 2.1
1842 apache2 0.2 1.5
4210 python3 0.1 0.8
1 systemd 0.0 0.1
Filtrando com grep
Para encontrar um processo específico, combine ps com grep. Use [n]ginx para evitar que o próprio grep apareça no resultado.
ps aux | grep [n]ginx
root 1520 0.0 0.1 65736 5120 ? Ss 08:02 0:00 nginx: master process
www-data 1521 0.0 0.2 66192 8704 ? S 08:02 0:00 nginx: worker process
Dica: o truque
[n]ginx funciona porque a regex [n]ginx casa com “nginx” mas não casa com a própria string “[n]ginx” que aparece na linha do grep.Árvore de processos com --forest
Para visualizar a hierarquia pai-filho de forma gráfica:
ps -ef --forest | head -15
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:01 ? 00:00:02 /usr/lib/systemd/systemd
root 412 1 0 08:01 ? 00:00:00 \_ /usr/sbin/sshd -D
root 5800 412 0 09:40 ? 00:00:00 \_ sshd: admin [priv]
admin 5810 5800 0 09:40 pts/0 00:00:00 \_ -bash
root 1830 1 0 08:03 ? 00:00:00 \_ /usr/sbin/apache2 -k start
www-data 1842 1830 0 08:03 ? 00:00:15 \_ /usr/sbin/apache2 -k start
pgrep: busca direta por nome
O pgrep retorna apenas os PIDs de processos que casam com o padrão, sem precisar de grep.
# Listar PIDs do sshd
pgrep sshd
412
5800
# Mostrar PID e nome do comando
pgrep -a sshd
412 /usr/sbin/sshd -D
5800 sshd: admin [priv]
# Filtrar por usuário
pgrep -u www-data
Dica: combine
pgrep -c nginx para contar quantos processos do nginx estão rodando — útil em scripts de monitoramento.