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: