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 top, htop ou ferramentas do tipo.
One Comment to “Linux: Usando PSTREE”