[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Procesos defunct y como evitarlos



El 05/07/11 14:08, fernando sainz escribió:
> El día 5 de julio de 2011 12:47, jmramirez (mas_ke_na)
> <mas_ke_na@hotmail.com> escribió:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Marc Aymerich escribió:
>>>
>>> 2011/7/5 ZorroPlateado <i32lelor.debian@gmail.com
>>> <mailto:i32lelor.debian@gmail.com>>
>>>
>>>     Tengo en Debian una instalación de Alfresco, el caso es que tengo un
>>>     script
>>>     para backups ejecutado desde cron, este script de backup para Mysql
>>>     y Alfresco
>>>     y luego copia sus archivos, posteriormente inicia los dos servicios.
>>>
>>>     El caso es que el orden de los scripts bash ejecutados es el siguiente:
>>>
>>>     /etc/init.d/alfresco start
>>>            ||
>>>            ||
>>>            ===> /mnt/almacen/alfresco/alfresco.sh start
>>>                                    ||
>>>                                    ||
>>>                                    ===>
>>>     /mnt/almacen/alfresco/tomcat/bin/catalina.sh
>>>
>>>
>>>     Pues bien el script backup usar /etc/init.d/alfresco/ start|stop . Y en
>>>     alfresco.sh encontramos un `nohup catalina.sh`.
>>>
>>>     El script de backup se ejecuta entero y alfresco es inciado sin
>>>     problemas,
>>>     recibo el email del cron con toda la ejecución. El problema está en
>>>     que el
>>>     proceso de backup aparece como defunct ya que es padre del proceso
>>>     java de
>>>     alfresco que hasta que no termine no cierra el proceso de backup.
>>>
>>>     He lido que el proceso defunc no consume recursos y solo existe
>>>     mientras el
>>>     proceso hijo no termine, con lo cual no deberia de ser ningun problema.
>>>
>>>     Pero pregunto, ¿se puede hacer que en la llamada al script
>>>     catalina.sh su
>>>     proceso padre sea por ejemplo init y de este modo el backup termine?
>> Buenas
>>
>>        Justo ayer lei un post [1] sobre algo parecido que lo mismo te puede
>> valer, basicamente es poner en tu script la llamada a este con el nombre
>> del proceso. Creo que es un apaño que te puede valer, aunque lo suyo
>> seria saber porque se queda zombie e intentar solucionarlo.
>>
>> [1] http://www.elsotanillo.net/content/view/50/1/lang,es/
>>
>> Un saludo y espero que sirva este apaño.
>>
>> PD: La web es de alguien de la lista (no recuerdo quien), lo mismo te
>> puede aportar mas datos.
>
> Como ya te han contestado ya existe un programa "mataprocesos"
> killall, pero aquí están hablando de procesos zombie, que ya no se
> están ejecutando y no consumen recursos.
>
> Se producen cuando no se captura la señal de muerte de los hijos y la
> forma de arreglarlo es haciendo bien los programas.. :-)
>
>
> Saludos.
>
>

Bueno, siempre puedes hacer una maña como poner al final del script

ps -e -ostat,ppid,pid,cmd | grep '^Z' | awk '{print $2}' | xargs kill -HUP

me parece mas fácil y sobre todo mas límpio que el script de la web que
han sugerido, al enviarle SIGHUP en vez de SIGKILL


Reply to: