Infra - Linux

pstree - Uma Visão Mais Objetiva dos Processos

O comando pstree certamente faz parte daquela lista de comandos raramente utilizados, mas muito úteis. Certamente vale a pena darmos uma atenção especial a ele.

por Rubens Queiroz de Almeida



Normalmente, quando desejamos ver quais processos estão rodando em nosso servidor, usamos o comando:

  ps -ef | more

A saída deste comando, que usamos diariamente, muitas vezes, não é das mais fáceis de se interpretar. Uma alternativa mais inteligente, é o comando pstree. A árvore de processos tem sua raiz a partir de um PID (Process ID), ou a partir do processo init. Se o nome de um usuário é especificado, a árvore de processos possui como raiz os processos deste usuário.

Vejamos um exemplo:

  % pstree
  init-+-acpid                           
       |-apache2-+-apache2               
       |         `-2*[apache2---26*[{apache2}]]
       |-atd                                   
       |-avahi-daemon---avahi-daemon           
       |-bonobo-activati---{bonobo-activati}   
       |-chrome-+-chrome                       
       |        |-chrome---3*[{chrome}]        
       |        `-19*[{chrome}]                
       |-chrome---7*[chrome---{chrome}]        
       |- console-kit-dae---63*[{console-kit-dae}]
       |-cron                                    
       |-2*[dbus-daemon]                         
       |-dbus-launch                             
       |-dd                                      
       |-devkit-disks-da---devkit-disks-da       
       |-devkit-power-da                         
       |-dhclient                                
       |-dhclient3                               
       |-drivemount_appl                         
       |-evolution-data----2*[{evolution-data-}] 
       |-evolution-excha---{evolution-excha}
  ... diversas linhas omitidas
  

Para exibir a árvore de processos, bem como a identificação dos processos, usamos:

  % pstree -p
  init(1)-+-acpid(944) 
          |-apache2(1803)-+-apache2(20235)
          |               |-apache2(20292)-+-{apache2}(20294)
          |               |                |-{apache2}(20295)
          |               |                |-{apache2}(20296)
          |               |                |-{apache2}(20297)
  ... diversas linhas omitidas

Pela listagem acima, podemos ver que o processo pai de todas as instâncias do Apache possui o número 20292. Para matar todos os processos do apache, é só terminar o processo pai.

Uma outra alternativa, é exibir a árvore de processos de um determinado usuário:

  % pstree rubens
  bonobo-activati---{bonobo-activati}
  
  chrome-+-chrome
         |-chrome---3*[{chrome}]
         `-19*[{chrome}]        
  
  chrome---7*[chrome---{chrome}]
  
  dbus-daemon
  
  dbus-launch
  
  drivemount_appl
  
  evolution-data----2*[{evolution-data-}]
  
  evolution-excha---{evolution-excha}
  
  gconfd-2
  
  gnome-session-+-bluetooth-apple
                |-compiz.real---sh---gtk-window-deco
                |-evolution-alarm---{evolution-alarm}
                |-firefox---14*[{firefox}]           
                |-gdu-notificatio

O comando pstree certamente faz parte daquela lista de comandos raramente utilizados, mas muito úteis. Certamente vale a pena darmos uma atenção especial a ele. O comando faz parte do pacote coreutils de sistemas Debian e derivados. O software foi desenvolvido por Werner Almesberger e Craig Small.

Rubens Queiroz de Almeida

Rubens Queiroz de Almeida - Mantenedor do site Dicas-L (http://www.dicas-l.com.br).