Matando processos zombies no linux

La estava eu, quase agendando uma manutenção em alguns servidores pra eliminar processos zumbis, daqueles que manda um kill -9 e fica preso como <defunct>

Consegui resolver isso com dois comandos, o que me garantiu que vou conseguir dormir as minhas 5 ou 6 horas de sono de todas as noites sem interrupções =P

kill -9 $(ps -A -ostat,ppid | grep -e '[zZ]'| awk '{ print $2 }') #mata todos os processos defuntos
ps aux |grep nomedoscript |awk '{print $2}' |xargs kill -9 #mata os processos que restaram

 

backup de sites com wget

Recentemente precisei efetuar backup de um site para leitura offline, tinha feito um script mirabolante com wget e sed, convertendo links etc, mas pesquisando melhor descobri que o proprio wget tem opções pra muita coisa.

O comando que usei foi

wget \
     --recursive \
     --no-clobber \
     --page-requisites \
     --html-extension \
     --convert-links \
     --restrict-file-names=windows \
     --domains website.org \
     --no-parent \
     http://website.org/diretorio/

As opções usadas são:

  • –recursive: backup do site inteiro, de forma recursiva.
  • –domains website.org: não vai seguir nenhum link de fora do domínio especificado.
  • –no-parent: não vai seguir nenhum link que remeta a diretórios anteriores.
  • –page-requisites: obter todos os elementos que compõem a página (imagens, css, etc).
  • –html-extension: usar extensão html.
  • –convert-links: converter links para uso offline.
  • –restrict-file-names=windows: Modificar nomes de arquivos para funcionar em windows
  • –no-clobber: não sobescrever arquvos (para caso o download ser interrompido e ter que recomeçar).

erro dropbox segmentation fault kde5

Desde que comecei na área de TI, lá pelos meus 15 anos de idade sempre gostei de testar novos sistemas operacionais, passei por n versões de windows, linux, osx, já tive hackintosh por um bom tempo inclusive.

Bem, atualmente estou usando o maui linux que é uma distribuição baseada no ubuntu (sempre a última lts) porém, na minha opinião, mais polida do que o kubuntu.

Após efetuar backup de todos os dados, instalar, restaurar as informações, o dropbox parou de funcionar, ficava dando segmentation fault e randomicamente funcionava.

Notei que era algo relativo ao kde, pois ao testar em outro ambiente gráfico (lxde) funcionou perfeitamente, já estava quase desistindo e voltando ao ubuntu, porém resolvi, em uma ultima tentativa, efetuar um trace do executável e ver se achava alguma coisa.

braz@sistemas-01:dropbox-lnx.x86_64-3.10.8$ strace ./dropbox 2> debug.txt

Então essas linhas me chamaram atenção

open("/usr/lib/dri/tls/swrast_dri.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/dri/swrast_dri.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0} ---
rt_sigaction(SIGSEGV, {0x7f09e1dea010, [SEGV], SA_RESTORER|SA_RESTART, 0x7f09e1a88d60}, NULL, 8) = 0
write(4, "Fatal Python error: ", 20)    = 20
write(4, "Segmentation fault", 18)      = 18
write(4, "\n\n", 2)                     = 2
write(4, "Traceback (most recent call firs"..., 36) = 36
write(4, "  File ", 7)                  = 7
write(4, "\"", 1)                       = 1
write(4, "d", 1)                        = 1

O dropbox estava tentando usar a Raster library, que não possuo uma vez que uso o driver proprietário da nvidia.

Mais um teste e BINGO

braz@sistemas-01:dropbox-lnx.x86_64-3.10.8$ LIBGL_DEBUG=verbose ./dropbox
libGL: OpenDriver: trying /usr/lib/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/dri/swrast_dri.so
libGL error: dlopen /usr/lib/dri/swrast_dri.so failed (/usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory)
libGL error: unable to load driver: swrast_dri.so
libGL error: reverting to indirect rendering

Solução:

Remover (nó meu caso eu só movi, para fins de backup), a biblioteca de opengl do dropbox.

felipebraz@sistemas-01:dropbox-lnx.x86_64-3.10.8$ mv libGL.so.1 libGL.so.1.bkp

Done, Dropbox funcionando de novo!