AIX - Identificando processos zumbis

Publicado por Andre Luiz Facina em 14/07/2010

[ Hits: 23.664 ]

 


AIX - Identificando processos zumbis



Quando um processo se torna zumbi, muitas vezes o nome do processo não aparece com o comando ps, e no lugar fica com o nome <defunct>. Nessas horas o AIX Kernel Debugger (comando kdb) é muito útil, pois identificamos qual aplicativo/processos se tornou zumbi.

Uma observação importante: o kdb mostra informações que estão em memória RAM, não identificando os que estão em swap. Abaixo um procedimento básico do kdb, executado como root com o prompt:

# kdb
(0)>

Listar todos os processos defuntos/zumbis:

(0)> p * | grep -i zombie

Mostrar apenas um processo defunto utilizando o grep e o PID do processo em hexadecimal:

(0)> p * | grep <hex pid>

Mostrar informações sobre o processo:

(0)> p <process slot>

Listar todas as threads do processo. Cada thread tem um slot number e um nome:

(0)> tpid <hex pid>

Mostrar as informações sobre uma única thread usando o thread slot number:

(0)> th <thread slot>

Mostrar as informações do processo, incluindo espaço do usuário e nome do processo (exec file):

(0)> u <thread slot> | grep "exec file"

Exemplo prático:

ps -ef |grep -i def
root  721136  282742   0                  0:00 <defunct>

# kdb
(0)> p * | grep -i zombie
pvproc+02C000  176 <zombie> ZOMB   00B00F0 0045076 00007FFFFFFFF080   0 0001
(0)>

(0)> p 176
     SLOT NAME     STATE      PID    PPID          ADSPACE  CL #THS

pvproc+02C000 176 <zombie> ZOMB 00B00F0 0045076 00007FFFFFFFF080 0 0001

NAME....... <zombie>
STATE...... stat  :05  .... xstat :FF00
FLAGS...... flag  :00210001 LOAD EXIT EXECED
[....]

(0)> tpid 00B00F0
     SLOT NAME     STATE    TID PRI   RQ CPUID  CL  WCHAN

pvthread+022200  546 <zombie> ZOMB  2220E7 03C    0         0
pvthread+033600  812 <zombie> ZOMB  3360ED 03C    2         0
pvthread+02D800  528 <zombie> ZOMB  2D8027 03C    0         0
pvthread+033500  822 <zombie> ZOMB  335089 03C    0         0

(0)> th 546
       SLOT NAME     STATE    TID PRI   RQ CPUID  CL  WCHAN

pvthread+022200  546 <zombie> ZOMB  2220E7 03C    0         0  

NAME................ <zombie>
WTYPE............... WZOMB    
.................tid :00000000002220E7  ......tsleep :FFFFFFFFFFFFFFFF
...............flags :00000000  ..............flags2 :00000000
...........pmcontext :00000000
DATA.........pvprocp :F100070F0002C000 <pvproc+02C000>
LINKS.....prevthread :F100070F10022200 <pvthread+022200>
..........nextthread :F100070F10022200 <pvthread+022200>
DISPATCH.......synch :FFFFFFFFFFFFFFFF
SCHEDULER...affinity :00000000  .................pri :0000003C
.............boosted :00000000  ...............wchan :0000000000000000
...............state :00000006  ...............wtype :0000000C
MISC       ..tv_eyec :7076746850524F43 (pvthPROC)
CHECKPOINT......vtid :00000000  .............chkfile :0000000000000000
LOCK........ lock_d @ F100070F10022230 0000000000000000
PROCFS......procfsvn :0000000000000000
NUMA............rset :0000000000000000
PROFILING.....prbase :0000000000000000  ....prpinned :0000000000000000
[....]

(0)> u 546 | grep "exec file"
Current exec file information:
   exec file..oracle
(0)>

No nosso exemplo o processo defunto é o Oracle. Identificando qual aplicativo está se tornando <defunct> agiliza o processo de troubleshooting.

André Facina

Outras dicas deste autor

Pfstat no OpenBSD 4.x

GlusterFS - Cluster de Filesystem no Linux

Hardening no OpenBSD

Apt-cacher - Sistema de cache para pacotes DEB

Migrando para o Ext4, o novo file system Linux

Leitura recomendada

Como adicionar a URL da sua rádio favorita ao RadioTray

História do Linux - 1991 a 2003

Tirinhas e histórias em quadrinhos pelo Linux

Como trocar o nome de sua máquina - hostname

GNU é o ca*****!

  

Comentários
[1] Comentário enviado por nickmarinho em 15/07/2010 - 15:29h

Você poderia ter dito de qual pacote esse comando faz parte, ou até mesmo ter colocado um:

#aptitude install pacote

Só para facilitar os usuários menos experientes.

Eu não encontrei um pacote com o nome de kdb para instalar.

Podes dizer aí ?

www.racaboxer.com.br
www.lucianomarinho.com.br

[2] Comentário enviado por netbug em 15/07/2010 - 22:05h

Oi nickmarinho, blz?

Na maioria das instalacões do AIX o kdb é para ser instalado por padrão. Se não estiver vc pode instalar esses dois filesets:

bos.sysmgt.serv_aid
bos.adt.debug

Para a instalacão vc pode utilizar os comandos 'smitty install', o geninstall ou o installp.

A instalacão com o geninstall é bem simples:

geninstall -d /dev/cd0 bos.sysmgt.serv_aid.rte


Abraco,
André



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts