Usando o comando PS como um ninja

Aprenda a usar o comando PS no terminal do linux para controlar a memória e processamento do seu computador

Atualizado

Você que utiliza o Linux já deve conhecer o Comando PS, até porque ele é um dos mais básicos comandos do Linux. O que você talvez não saiba é que você pode aprender a usar este comando como um Ninja e facilitar muito sua vida na administração de sistemas Linux.

Como sabemos, os o comando ps lista os processos em execução no sistema, e você consegue saber tudo que está sendo executado no momento. Agora, muitos não sabem usar ao fundo este comando, e com ele é possível por exemplo:

  • Identificar qual processo é de determinado usuário
  • Identificar qual processo utiliza mais memória ou processamento
  • Saber como está formada a árvore de processos
  • Criar um monitor em tempo real

O Básico do Comando PS

Primeiro começamos com o Básico. Para listar todos os processos, temos duas formas de mostrar os resultados:

Formato BSD

$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 185408 4936 ? Ss Mai27 0:05 /sbin/init splash
root 2 0.0 0.0 0 0 ? S Mai27 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< Mai27 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S< Mai27 0:00 [mm_percpu_wq]
root 7 0.0 0.0 0 0 ? S Mai27 0:04 [ksoftirqd/0]
root 8 0.0 0.0 0 0 ? S Mai27 6:01 [rcu_sched]
root 9 0.0 0.0 0 0 ? S Mai27 0:00 [rcu_bh]
root 10 0.0 0.0 0 0 ? S Mai27 0:00 [migration/0]
root 11 0.0 0.0 0 0 ? S Mai27 0:00 [watchdog/0]
root 12 0.0 0.0 0 0 ? S Mai27 0:00 [cpuhp/0]

Ou o formato UNIX/Linux

$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Mai27 ? 00:00:05 /sbin/init splash
root 2 0 0 Mai27 ? 00:00:00 [kthreadd]
root 4 2 0 Mai27 ? 00:00:00 [kworker/0:0H]
root 6 2 0 Mai27 ? 00:00:00 [mm_percpu_wq]
root 7 2 0 Mai27 ? 00:00:04 [ksoftirqd/0]
root 8 2 0 Mai27 ? 00:06:01 [rcu_sched]
root 9 2 0 Mai27 ? 00:00:00 [rcu_bh]
root 10 2 0 Mai27 ? 00:00:00 [migration/0]
root 11 2 0 Mai27 ? 00:00:00 [watchdog/0]
root 12 2 0 Mai27 ? 00:00:00 [cpuhp/0]

A diferença é pequena, mas na primeira opção temos como destaque o %CPU e %MEM que mostram respectivamente o percentual de consumo de CPU ou memória do sistema.

  Usando o arquivo de Swap no Linux

Identificando os processos de um usuário

Podemos localizar todos os processos de um usuário simplesmente filtrando com a opção -u depois o nome do usuário.

$ ps -f -u marcos
UID PID PPID C STIME TTY TIME CMD
marcos 1022 1551 0 Mai27 ? 00:01:02 /usr/bin/anydesk --local-service
marcos 1023 1022 0 Mai27 ? 00:00:13 /usr/bin/anydesk --local-service
marcos 1540 1 0 Mai27 ? 00:00:00 /lib/systemd/systemd --user
marcos 1541 1540 0 Mai27 ? 00:00:00 (sd-pam)
marcos 1549 1 0 Mai27 ? 00:10:02 /usr/bin/gnome-keyring-daemon --daemonize --login
marcos 1551 1362 0 Mai27 ? 00:00:00 /sbin/upstart --user
marcos 1620 1551 0 Mai27 ? 00:06:09 dbus-daemon --fork --session --address=unix:abstract=/tmp/dbus-mINqoOxLkR
marcos 1642 1551 0 Mai27 ? 00:00:00 upstart-udev-bridge --daemon --user
marcos 1674 1551 0 Mai27 ? 00:00:02 upstart-dbus-bridge --daemon --session --user --bus-name session
marcos 1675 1551 0 Mai27 ? 00:00:00 upstart-dbus-bridge --daemon --system --user --bus-name system

Identificar o maior consumo de memória

Neste exemplo utilizo uma pequena alteração para que o resultado seja mais customizado. Colocando a opção -eo e depois listando os campos a serem exibidos pid,cmd,%mem,%cpu e depois com a opção –sort para organizar por consumo de memória.

Como a lista fica grande, colocamos o | head no final para mostrar somente os primeiros resultados.

$ ps -eo pid,cmd,%mem,%cpu --sort=-%mem | head
PID CMD %MEM %CPU
3726 /usr/lib/firefox/firefox -c 12.0 0.0
2318 /usr/lib/thunderbird/thunde 7.2 0.8
31405 kdenlive 6.4 0.5
4129 /opt/google/chrome/chrome 4.9 2.9
2312 /usr/lib/firefox/firefox 4.3 2.5
4177 /opt/google/chrome/chrome - 3.6 0.8
3962 /usr/lib/firefox/firefox -c 2.6 0.0
16445 /opt/google/chrome/chrome - 2.4 14.2
8712 /opt/google/chrome/chrome - 2.0 0.3

Árvore de processos

Podemos fazer uma lista da árvore de um determinado processo com a opção –forest para listar tudo que partiu do chrome

$ ps -f --forest -C chrome
UID PID PPID C STIME TTY TIME CMD
marcos 4129 1749 2 Mai27 ? 04:52:13 /opt/google/chrome/chrome
marcos 4138 4129 0 Mai27 ? 00:00:00 \_ /opt/google/chrome/chrome --
marcos 4142 4138 0 Mai27 ? 00:00:07 | \_ /opt/google/chrome/chrom
marcos 4226 4142 0 Mai27 ? 00:00:28 | \_ /opt/google/chrome/c
marcos 4242 4142 0 Mai27 ? 00:00:11 | \_ /opt/google/chrome/c
marcos 4257 4142 0 Mai27 ? 00:00:11 | \_ /opt/google/chrome/c
marcos 4269 4142 1 Mai27 ? 03:12:03 | \_ /opt/google/chrome/c
marcos 4271 4142 0 Mai27 ? 00:01:40 | \_ /opt/google/chrome/c
marcos 4294 4142 0 Mai27 ? 00:48:32 | \_ /opt/google/chrome/c
marcos 4297 4142 0 Mai27 ? 00:12:51 | \_ /opt/google/chrome/c
marcos 4307 4142 0 Mai27 ? 00:00:28 | \_ /opt/google/chrome/c
marcos 4314 4142 0 Mai27 ? 00:01:59 | \_ /opt/google/chrome/c
marcos 4675 4142 0 Mai27 ? 00:00:10 | \_ /opt/google/chrome/c
marcos 4820 4142 0 Mai27 ? 01:34:36 | \_ /opt/google/chrome/c
marcos 4834 4142 0 Mai27 ? 01:08:59 | \_ /opt/google/chrome/c
marcos 26089 4142 0 Mai27 ? 00:04:53 | \_ /opt/google/chrome/c
marcos 26645 4142 0 Mai27 ? 00:03:17 | \_ /opt/google/chrome/c
marcos 13380 4142 0 Mai28 ? 00:00:02 | \_ /opt/google/chrome/c
marcos 8712 4142 0 Mai28 ? 00:27:33 | \_ /opt/google/chrome/c
marcos 19108 4142 0 Mai31 ? 00:00:01 | \_ /opt/google/chrome/c
marcos 4109 4142 0 Jun02 ? 00:00:08 | \_ /opt/google/chrome/c
marcos 4464 4142 0 Jun02 ? 00:00:04 | \_ /opt/google/chrome/c
marcos 8768 4142 0 Jun02 ? 00:10:56 | \_ /opt/google/chrome/c
marcos 8815 4142 0 Jun02 ? 00:00:19 | \_ /opt/google/chrome/c
marcos 7126 4142 0 11:37 ? 00:00:01 | \_ /opt/google/chrome/c
marcos 7179 4142 0 11:37 ? 00:01:05 | \_ /opt/google/chrome/c
marcos 7280 4142 3 11:39 ? 00:04:35 | \_ /opt/google/chrome/c
marcos 9265 4142 0 12:30 ? 00:00:43 | \_ /opt/google/chrome/c
marcos 9974 4142 13 12:46 ? 00:10:46 | \_ /opt/google/chrome/c
marcos 10903 4142 0 13:07 ? 00:00:00 | \_ /opt/google/chrome/c
marcos 10992 4142 0 13:08 ? 00:00:06 | \_ /opt/google/chrome/c
marcos 11142 4142 4 13:11 ? 00:02:21 | \_ /opt/google/chrome/c
marcos 11319 4142 16 13:16 ? 00:08:21 | \_ /opt/google/chrome/c
marcos 16445 4142 10 13:53 ? 00:01:32 | \_ /opt/google/chrome/c
marcos 4177 4129 0 Mai27 ? 01:26:55 \_ /opt/google/chrome/chrome --
marcos 4180 4177 0 Mai27 ? 00:00:00 \_ /opt/google/chrome/chrome

Criar um monitor em tempo real para os consumos de memória e CPU

Para isto, temos que deixar uma janela de terminal somente para este monitor em tempo real.

$ watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'

Cada 1,0s: ps -e -o pid,uname,cmd,pmem,pcpu --sort=...

 PID USER CMD %MEM %CPU
3726 marcos /usr/lib/firefox/firefox -c 12.5 0.0
2318 marcos /usr/lib/thunderbird/thunde 7.1 0.8
31405 marcos kdenlive 6.4 0.5
4129 marcos /opt/google/chrome/chrome 4.9 2.9
2312 marcos /usr/lib/firefox/firefox 4.4 2.5
4177 marcos /opt/google/chrome/chrome - 3.6 0.8
3962 marcos /usr/lib/firefox/firefox -c 2.8 0.0
16445 marcos /opt/google/chrome/chrome - 2.5 7.7
8712 marcos /opt/google/chrome/chrome - 2.0 0.3
9974 marcos /opt/google/chrome/chrome - 2.0 12.2
7179 marcos /opt/google/chrome/chrome - 1.9 0.6
4297 marcos /opt/google/chrome/chrome - 1.8 0.1
15449 marcos /usr/lib/virtualbox/Virtual 1.8 31.9
1106 root /usr/lib/xorg/Xorg -core :0 1.7 1.6

Esta janela ficará se atualizando a cada 1 segundo. Para sair, basta você apertar CTRL + C e pronto.

  Instalando versão antiga do MySql no Debian

Espero que tenham gostado das formas de usar o comando ps e que isto facilite bastante seu dia a dia.

Comando PS, Comandos Linux

Apoio

Participe da campanha!

Cafézinho

Quer me pagar um café? Pode usar a chave PIX abaixo

Chave PIX e-mail

[email protected]

Vídeos

Assista e se inscreva em nosso canal!

NEWSLETTER

Cadastre-se gratuitamente e fique por dentro de todas as novidades do blog, como dicas e tutoriais.

Não enviamos spams, fique tranquilo

Deixe um comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.