Debugging pendurando processo bash

7

Depois de um mau desempenho hoje, verifiquei top :

 1  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  14229 myuser    20   0  8776 5264 1684 R   99  0.2   1383:47 bash

98-100% de uso por um processo de Bash que deveria ter morrido há muito tempo (acabei de fechar todos os terminais para verificá-lo)? Não tenho certeza do que está causando isso.

$ lsof -p 14229
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
bash    14229 myuser  cwd    DIR   0,23     4096 11059271 /home/users/myuser (company.com:/home/users/)
bash    14229 myuser  rtd    DIR    8,2     4096        2 /
bash    14229 myuser  txt    REG    8,2   920788  7617113 /bin/bash
bash    14229 myuser  mem    REG    8,2    30520   657679 /lib/i386-linux-gnu/libnss_compat-2.15.so
bash    14229 myuser  mem    REG    8,2    13940   657672 /lib/i386-linux-gnu/libdl-2.15.so
bash    14229 myuser  mem    REG    8,2  1713640   657666 /lib/i386-linux-gnu/libc-2.15.so
bash    14229 myuser  mem    REG    8,2   121024   660635 /lib/i386-linux-gnu/libtinfo.so.5.9
bash    14229 myuser  mem    REG    8,2    47040   657683 /lib/i386-linux-gnu/libnss_files-2.15.so
bash    14229 myuser  mem    REG    8,2    42652   657690 /lib/i386-linux-gnu/libnss_nis-2.15.so
bash    14229 myuser  mem    REG    8,2   134344   657659 /lib/i386-linux-gnu/ld-2.15.so
bash    14229 myuser  mem    REG    8,2    92016   657678 /lib/i386-linux-gnu/libnsl-2.15.so
bash    14229 myuser  mem    REG    8,2  2919792  7748495 /usr/lib/locale/locale-archive
bash    14229 myuser  mem    REG    8,2    26256  7757442 /usr/lib/i386-linux-gnu/gconv/gconv-modules.cache
bash    14229 myuser    0r   CHR  136,1      0t0        4 /dev/pts/1 (deleted)
bash    14229 myuser    1w   CHR  136,1      0t0        4 /dev/pts/1 (deleted)
bash    14229 myuser    2w   CHR  136,1      0t0        4 /dev/pts/1 (deleted)
bash    14229 myuser  255u   CHR  136,1      0t0        4 /dev/pts/1 (deleted)

Exceto pelas linhas /dev/pts , isso é idêntico a outros processos bash:

COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
bash    6674 myuser  cwd    DIR   0,23     4096 11059271 /home/users/myuser (company.com:/home/users/)
bash    6674 myuser  rtd    DIR    8,2     4096        2 /
bash    6674 myuser  txt    REG    8,2   920788  7617113 /bin/bash
bash    6674 myuser  mem    REG    8,2  1713640   657666 /lib/i386-linux-gnu/libc-2.15.so
bash    6674 myuser  mem    REG    8,2   121024   660635 /lib/i386-linux-gnu/libtinfo.so.5.9
bash    6674 myuser  mem    REG    8,2    47040   657683 /lib/i386-linux-gnu/libnss_files-2.15.so
bash    6674 myuser  mem    REG    8,2    13940   657672 /lib/i386-linux-gnu/libdl-2.15.so
bash    6674 myuser  mem    REG    8,2    30520   657679 /lib/i386-linux-gnu/libnss_compat-2.15.so
bash    6674 myuser  mem    REG    8,2    42652   657690 /lib/i386-linux-gnu/libnss_nis-2.15.so
bash    6674 myuser  mem    REG    8,2    92016   657678 /lib/i386-linux-gnu/libnsl-2.15.so
bash    6674 myuser  mem    REG    8,2   134344   657659 /lib/i386-linux-gnu/ld-2.15.so
bash    6674 myuser  mem    REG    8,2  2919792  7748495 /usr/lib/locale/locale-archive
bash    6674 myuser  mem    REG    8,2    26256  7757442 /usr/lib/i386-linux-gnu/gconv/gconv-modules.cache
bash    6674 myuser    0r   CHR  136,2      0t0        5 /dev/pts/2
bash    6674 myuser    1w   CHR  136,2      0t0        5 /dev/pts/2
bash    6674 myuser    2w   CHR  136,2      0t0        5 /dev/pts/2
bash    6674 myuser  255u   CHR  136,2      0t0        5 /dev/pts/2

O padrão kill não funciona:

$ kill 14229 && sleep 1m && kill -0 14229 && echo Alive
Alive

De acordo com ps wafux , não há processos filhos.

Tentei traçar como recomendado por @ChandraRavoori:

$ sudo strace -p 14229
Process 14229 attached - interrupt to quit

Depois disso, não recebo saída. Eu tentei kill 14229 várias vezes, e ele imprimiu o seguinte toda vez:

--- SIGTERM (Terminated) @ 0 (0) ---

Quais são as outras coisas para verificar antes de kill -9 ?

    
por l0b0 25.09.2012 / 16:13

2 respostas

2

Tente

strace -p 14229

Eu imprimo cada syscall que o processo invoca. Então você vê o que o processo realmente faz.

link

    
por 17.01.2014 / 14:23
0

Não sei se você já tentou, mas% ps xal , ele pode te dar o id do processo pai,

Você pode matar o pai para se recuperar dele.

PS: geralmente o bash tem o processo init como pai. se é assim também aqui, então apenas a solução padrão, Ctrl + Alt + del (ou reinicialização) só pode resolvê-lo.

    
por 02.05.2013 / 12:20