Linux: Usando PSTREE

 

 

Introdução

Processo é uma instância(parte) de um programa que está sendo executado. Um programa pode ter um ou mais processos.

pstree exibe os processos sendo executados em formato de árvore.

Como exemplo:

 

Instalando pstree

pstree faz parte do pacote psmisc.

pstree pode não estar instalado. Vamos instalá-lo.

Debia/Ubuntu e derivados

sudo apt install psmisc -y

Red Hat e derivados

sudo yum install psmisc -y

ou

sudo dnf install psmisc -y

Opções da Ferramenta pstree

Essas são as opções do programa pstree:

-a, --arguments     mostra argumentos de linha de comando
  -A, --ascii         usa caracteres ASCII no desenho de linhas
  -c, --compact-not   não comprime subárvores idênticas
  -C, --color=TIPO    colore processo por atributo
                      (age)
  -g, --show-pgids    mostra ids de grupo de processos; implica em -c
  -G, --vt100         usa caracteres VT100 no desenho de linhas
  -h, --highlight-all realça o processo atual e seus ancestrais
  -H PID, --highlight-pid=PID
                      realça este processo e seus ancestrais
  -l, --long          não trunca linhas longas
  -n, --numeric-sort  ordena saída pelo PID
  -N TIPO, --ns-sort=TIPO
                      ordena por este tipo de espaço de nomes
                              (cgroup, ipc, mnt, net, pid, user, uts)
  -p, --show-pids     mostra PIDs; implica em -c
  -s, --show-parents  mostra os pais do processo selecionado
  -S, --ns-changes    mostra transições de espaço de nomes
  -t, --thread-names  mostra nomes completos de threads
  -T, --hide-threads  oculta threads, mostra apenas processos
  -u, --uid-changes   mostra transições de uid
  -U, --unicode       usa caracteres UTF-8 (Unicode) no desenho de linhas
  -V, --version       exibe informações da versão
  -Z, --security-context
                      mostra contextos de segurança do SELinux

  PID    inicia deste PID; predefinido como 1 (init)
  USR    mostra apenas árvores originadas de processos deste usuário

 

Observações sobre pstree

 

Ramificações Repetidas

Ao executar pstree, se houver ramificações repetidas ou idênticas elas serão agrupadas. Exemplo,

Isto

init-+-getty
     |-getty
     |-getty
     `-getty

Torna-se isto:

init---4*[getty]

 

Threads filhas

threads filhas  de um processo são encontradas abaixo do processo pai e estará entre colchetes.

     icecast2---13*[{icecast2}]

 

Usando de pstree

 

#1 executar somente pstree sem opções já é suficiente para termos um belo resultado

elder@server01:~$ pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─apache2───5*[apache2]
        ├─cron
        ├─dbus-daemon
        ├─exim4
        ├─login───bash
        ├─nagios───5*[nagios]
        ├─ntpd───{ntpd}
        ├─packagekitd───2*[{packagekitd}]
        ├─polkitd───2*[{polkitd}]
        ├─rsyslogd───3*[{rsyslogd}]
        ├─sshd───sshd───sshd───bash───pstree
        ├─systemd───(sd-pam)
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─udisksd───4*[{udisksd}]
        ├─wpa_supplicant
        └─zed───2*[{zed}]

#2 Acima tivemos um resultado compactado. Vamos usar agora a opção -c para desabilitar a forma compacta. Veja que temos resultado expandido e processos repetidos não foram mescados.

elder@server01:~$ pstree -c
systemd─┬─ModemManager─┬─{ModemManager}
        │              └─{ModemManager}
        ├─NetworkManager─┬─dhclient
        │                ├─{NetworkManager}
        │                └─{NetworkManager}
        ├─apache2─┬─apache2
        │         ├─apache2
        │         ├─apache2
        │         ├─apache2
        │         └─apache2
        ├─cron
        ├─dbus-daemon
        ├─exim4
        ├─login───bash
        ├─nagios─┬─nagios
        │        ├─nagios
        │        ├─nagios
        │        ├─nagios
        │        └─nagios
        ├─ntpd───{ntpd}
        ├─packagekitd─┬─{packagekitd}
        │             └─{packagekitd}
        ├─polkitd─┬─{polkitd}
        │         └─{polkitd}
        ├─rsyslogd─┬─{rsyslogd}
        │          ├─{rsyslogd}
        │          └─{rsyslogd}
        ├─sshd───sshd───sshd───bash───pstree
        ├─systemd───(sd-pam)
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─udisksd─┬─{udisksd}
        │         ├─{udisksd}
        │         ├─{udisksd}
        │         └─{udisksd}
        ├─wpa_supplicant
        └─zed─┬─{zed}
              └─{zed}

 

#3 exibiremos o pid dos processos usando a opção -p

elder@server01:~$ pstree -p
systemd(1)─┬─ModemManager(430)─┬─{ModemManager}(443)
           │                   └─{ModemManager}(448)
           ├─NetworkManager(409)─┬─dhclient(807)
           │                     ├─{NetworkManager}(455)
           │                     └─{NetworkManager}(458)
           ├─apache2(511)─┬─apache2(512)
           │              ├─apache2(513)
           │              ├─apache2(514)
           │              ├─apache2(515)
           │              └─apache2(516)
           ├─cron(433)
           ├─dbus-daemon(403)
           ├─exim4(780)
           ├─login(475)───bash(803)
           ├─nagios(493)─┬─nagios(494)
           │             ├─nagios(495)
           │             ├─nagios(496)
           │             ├─nagios(497)
           │             └─nagios(520)
           ├─ntpd(485)───{ntpd}(492)
           ├─polkitd(449)─┬─{polkitd}(450)
           │              └─{polkitd}(452)
           ├─rsyslogd(414)─┬─{rsyslogd}(439)
           │               ├─{rsyslogd}(440)
           │               └─{rsyslogd}(441)
           ├─sshd(498)───sshd(1395)───sshd(1401)───bash(1402)───pstree(1454)
           ├─systemd(792)───(sd-pam)(793)
           ├─systemd-journal(224)
           ├─systemd-logind(420)
           ├─systemd-udevd(234)
           ├─udisksd(422)─┬─{udisksd}(442)
           │              ├─{udisksd}(447)
           │              ├─{udisksd}(456)
           │              └─{udisksd}(510)
           ├─wpa_supplicant(407)
           └─zed(431)─┬─{zed}(518)
                      └─{zed}(519)

 

#4 Ocultando threads com a opção -T. Veja abaixo que resultados como 4*[{udisksd}] ou  2*[{zed}] foram ocultados.

elder@server01:~$ sudo pstree  -T
systemd─┬─ModemManager
        ├─NetworkManager───dhclient
        ├─apache2───5*[apache2]
        ├─cron
        ├─dbus-daemon
        ├─exim4
        ├─login───bash
        ├─nagios───5*[nagios]
        ├─ntpd
        ├─polkitd
        ├─rsyslogd
        ├─sshd───sshd───sshd───bash───sudo───pstree
        ├─systemd───(sd-pam)
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─udisksd
        ├─wpa_supplicant
        └─zed

 

Conclusão

 

pstree nos dá uma visualização ramificada dos processos executados em nossa distro linux. Uma alternativa à mais a ser usada juntamente com ps ou tophtop ou ferramentas do tipo.

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

One Comment to “Linux: Usando PSTREE”

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *