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

Re: Procesos defunct y como evitarlos



El 05/07/11 14:17, Juan Antonio escribió:
> 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
>
>

Corrijo

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

por

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

el clásico error de cat | grep

Un saludo.



Reply to: