2016-08-18 1 views
0

Je travaille sur le script pour tomcat de redémarrage automatique lorsque OOM est survenue je mets cette arguement: XX:OnOutOfMemoryError='myscript.sh'Script pour redémarrer Tomcat si la mémoire est

Mais lorsque le script redémarre tomcat c'est échoue parce que le stocket est encore ouvert alors j'ai tué le PID tomcat

J'ai donc essayé de lancer un script depuis myscript.sh mais ce nouveau script (OOM.sh) est toujours ouvert par le stocket donc rien changer.

Comment je peux procéder?

grâce

Répondre

0

Peut-être besoin de votre script pour attendre un peu au lieu immédiatement essayer de relancer Tomcat.

Au lieu d'écrire votre script comme ceci:

#!/bin/sh 
export CATALINA_HOME=... 
export CATALINA_BASE=... 
$CATALINA_HOME/bin/catalina.sh start 

le faire comme ceci:

#!/bin/sh 
export CATALINA_HOME=... 
export CATALINA_BASE=... 
export CATALINA_PID_FILE=... 
export PID=$(cat $CATALINA_PID_FILE) 
while [ "1" == "$(kill -0 $PID)" ]; do 
    sleep 1 
done 
$CATALINA_HOME/bin/catalina.sh start 

Ce dormira jusqu'à ce que Tomcat est arrêté. Vous pouvez ajouter un délai d'attente pour le processus après avoir attendu un certain temps avant que Tomcat ne s'éteigne proprement ... peut-être quelque chose comme 10 secondes.

+0

merci de répondre. le problème est toujours là, quand est lancé le script, il a obtenu le même descripteur de fichier et le stocket est encore ouvert quand je commence tomcat écoute dt_socket de transport à l'adresse: 5007 java 7411 4u racine IPv4 43872 0T0 TCP *: 5007 (LISTEN) OOM.sh 7447 racine 4u IPv4 43872 0t0 TCP *: 5007 (LISTEN) – sytolaw

+0

Ce commentaire est illisible. Essayez d'ajouter un peu de débogage au script pour voir ce qui se passe. –