Re: Procesos defunct y como evitarlos
On Miércoles, 6 de Julio de 2011 08:59:36 Juan Antonio escribió:
> El 06/07/11 00:14, ZorroPlateado escribió:
> > On Martes, 5 de Julio de 2011 11:41:26 usted escribió:
> >> 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?
> >
> > Me he puesto a revisar el contenido del script catalina.sh que acompaña a
> > alfresco y veo que lanza el proceso java con sus parametros haciendo uso
> > de "exec" con lo que ello implica segun el manual de bash....
> >
> > Por cierto el proceso defunct es el script inicial llamado desde cron,
> > aqui una lista del estado de procesos:
> >
> > root 2872 1 0 21:08 ? 00:00:00 /bin/sh /usr/bin/soffice
> > - accept=socket,host=localhost,port=8100;urp;StarOffic
> >
> > root 2923 1 1 21:08 ? 00:01:14 /usr/lib/jvm/java-1.5.0-
> > sun/jre//bin/java -Djava.util.logging.manager=org.apac
> >
> > root 2949 2872 0 21:08 ? 00:00:00
> > /usr/lib/openoffice/program/soffice.bin
> > -accept=socket,host=localhost,port=810
> >
> > root 19222 1 0 May01 ? 00:00:08 /usr/sbin/cron
> >
> > root 20110 2 0 02:05 ? 00:00:03 [pdflush]
> >
> > root 32583 19222 0 20:24 ? 00:00:00 /USR/SBIN/CRON
> > root 32584 32583 0 20:24 ? 00:00:00 [backup-diferenc]
> > <defunct> 104 32587 32583 0 20:24 ? 00:00:00
> > /usr/sbin/sendmail -i - FCronDaemon -oem root
> > root 32719 2 0 20:24 ? 00:00:07 [pdflush]
>
> Hola,
>
> si ejecutas la tarea a mano, igual que la lanza cron ¿Se queda en el
> mismo estado? Prueba a lanzarla con sh -x y si la salida no es demasiado
> extensa envíala en un correo.
>
> Estando el proceso zombie, prueba a enviarle un SIGHUP a cron, a ver que
> hace.
>
> Un saludo.
Al ejecutar la tarea a mano no hay problemas con la parada/inicio. Vamos que
todo la parrafada viene desde cron.
He enviado señal al proceso zombie, que están en estado Zs, es decir el script
de backup, y no admite ningun kill, solo termina tras finalizar el proceso
alfresco.
La situacion de los procesos en cuestion tras ejecutar parada/inicio es ( en
este caso he creado un script que solo realice la parada/inicio de alfresco llamado
inicio-parada-alfresco.sh que aparece como defunct):
root 19222 0.0 0.0 3564 988 ? Ss May01 0:08 /usr/sbin/cron
root 18899 0.0 0.0 3908 944 ? S 16:29 0:00 \_ /USR/SBIN/CRON
root 18900 0.0 0.0 0 0 ? Zs 16:29 0:00 \_ [inicio-parada-a] <defunct>
104 18913 0.0 0.0 6124 1580 ? S 16:29 0:00 \_ /usr/sbin/sendmail -i -FCronDaemon -oem root
root 18914 168 13.4 1393024 278916 ? Sl 16:29 2:27 /usr/lib/jvm/java-1.5.0-sun//bin/java -Xms512m -Xmx1024m -server -XX:CompileCommand=exclude,org/apache/lucene/index/IndexReader$1,doBody -XX:CompileCommand=exclude,org/alfresco/repo/search/impl/lucene/index/IndexInfo$Merger,mergeIndexes -XX:CompileCommand=exclude,org/alfresco/repo/search/impl/lucene/index/IndexInfo$Merger,mergeDeletions -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/mnt/almacen/alfresco/tomcat/conf/logging.properties -Djava.endorsed.dirs=/mnt/almacen/alfresco/tomcat/common/endorsed -classpath :/mnt/almacen/alfresco/tomcat/bin/bootstrap.jar:/mnt/almacen/alfresco/tomcat/bin/commons-logging-api.jar -Dcatalina.base=/mnt/almacen/alfresco/tomcat -Dcatalina.home=/mnt/almacen/alfresco/tomcat -Djava.io.tmpdir=/mnt/almacen/alfresco/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 18916 0.0 0.0 3992 1236 ? S 16:29 0:00 /bin/sh /usr/bin/soffice -accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager -nologo -headless -nofirststartwizard
root 18936 0.3 1.1 128440 23700 ? Sl 16:29 0:00 \_ /usr/lib/openoffice/program/soffice.bin -accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager -nologo -headless -nofirststartwizard
Reply to: