From 0eaee94caaafd984203731d9d2b7ccf8c0a73c74 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 14 Dec 2009 22:05:07 +0000 Subject: [PATCH] - Fix scripts to new java 6 conditions - improve to execute kill when it detects that server didn't stop --- utils/unix/adempiere_Debian.sh | 197 ++++++++++++++++++--------------- utils/unix/adempiere_RedHat.sh | 44 +++++--- 2 files changed, 136 insertions(+), 105 deletions(-) diff --git a/utils/unix/adempiere_Debian.sh b/utils/unix/adempiere_Debian.sh index a92635a554..40aa654007 100644 --- a/utils/unix/adempiere_Debian.sh +++ b/utils/unix/adempiere_Debian.sh @@ -25,7 +25,7 @@ ADEMPIEREUSER=adempiere # detected some problems with Hardy Heron ubuntu using the bash source command ENVFILE=/home/adempiere/.bashrc # STOPMESSAGE="Halting VM" # Message when using java 5 -STOPMESSAGE="INFO.*\[Server\].*Shutting down the server" # Message when using java 6 +STOPMESSAGE="INFO.*Server\].*Shutdown complete" # Message when using java 6 . /lib/lsb/init-functions @@ -34,143 +34,156 @@ ADEMPIERESTATUS= MAXITERATIONS=60 # 2 seconds every iteration, max wait 2 minutes) getadempierestatus() { - ADEMPIERESTATUSSTRING=$(ps ax | grep -v grep | grep $EXECDIR) - echo $ADEMPIERESTATUSSTRING | grep -q $EXECDIR - ADEMPIERESTATUS=$? + ADEMPIERESTATUSSTRING=$(ps ax | grep -v grep | grep $EXECDIR) + echo $ADEMPIERESTATUSSTRING | grep -q $EXECDIR + ADEMPIERESTATUS=$? } start () { - getadempierestatus - if [ $ADEMPIERESTATUS -eq 0 ] ; then - echo "ADempiere is already running" - return 1 - fi - echo -n "Starting ADempiere ERP: " - . $ENVFILE - export LOGFILE=$ADEMPIERE_HOME/jboss/server/adempiere/log/adempiere_`date +%Y%m%d%H%M%S`.log - su $ADEMPIEREUSER -c "mkdir -p $ADEMPIERE_HOME/jboss/server/adempiere/log" - su $ADEMPIEREUSER -c "cd $EXECDIR/utils;$EXECDIR/utils/RUN_Server2.sh &> $LOGFILE &" - RETVAL=$? - if [ $RETVAL -eq 0 ] ; then - # wait for server to be confirmed as started in logfile - STATUSTEST=0 - ITERATIONS=0 - while [ $STATUSTEST -eq 0 ] ; do - sleep 2 - tail -n 5 $LOGFILE | grep -q 'INFO.*\[Server\].*Started in' && STATUSTEST=1 - echo -n "." - ITERATIONS=`expr $ITERATIONS + 1` - if [ $ITERATIONS -gt $MAXITERATIONS ] - then - break - fi - done - if [ $STATUSTEST -eq 0 ] - then - log_warning_msg "Service hasn't started within the timeout allowed, please review file $LOGFILE to see the status of the service" - else - log_success_msg "Service started" + getadempierestatus + if [ $ADEMPIERESTATUS -eq 0 ] ; then + echo "ADempiere is already running" + return 1 fi + echo -n "Starting ADempiere ERP: " + . $ENVFILE + export LOGFILE=$ADEMPIERE_HOME/jboss/server/adempiere/log/adempiere_`date +%Y%m%d%H%M%S`.log + su $ADEMPIEREUSER -c "mkdir -p $ADEMPIERE_HOME/jboss/server/adempiere/log" + su $ADEMPIEREUSER -c "cd $EXECDIR/utils;$EXECDIR/utils/RUN_Server2.sh &> $LOGFILE &" + RETVAL=$? + if [ $RETVAL -eq 0 ] ; then + # wait for server to be confirmed as started in logfile + STATUSTEST=0 + ITERATIONS=0 + while [ $STATUSTEST -eq 0 ] ; do + sleep 2 + tail -n 9 $LOGFILE | grep -q 'INFO.*\[Server\].*Started in' && STATUSTEST=1 + echo -n "." + ITERATIONS=`expr $ITERATIONS + 1` + if [ $ITERATIONS -gt $MAXITERATIONS ] + then + break + fi + done + if [ $STATUSTEST -eq 0 ] + then + log_warning_msg "Service hasn't started within the timeout allowed, please review file $LOGFILE to see the status of the service" + else + log_success_msg "Service started" + fi + echo + else + log_failure_msg "Service not started" echo - else - log_failure_msg "Service not started" - echo - fi - return $RETVAL + fi + return $RETVAL } stop () { getadempierestatus if [ $ADEMPIERESTATUS -ne 0 ] ; then - echo "ADempiere is already stopped" - return 1 + echo "ADempiere is already stopped" + return 1 fi echo -n "Stopping ADempiere ERP: " . $ENVFILE - export LASTLOG=`ls -t $ADEMPIERE_HOME/jboss/server/adempiere/log/adempiere_??????????????.log | head -1` + # export LASTLOG=`ls -t $ADEMPIERE_HOME/jboss/server/adempiere/log/adempiere_??????????????.log | head -1` + export LASTLOG=$ADEMPIERE_HOME/jboss/server/adempiere/log/server.log su $ADEMPIEREUSER -c "cd $EXECDIR/utils;$EXECDIR/utils/RUN_Server2Stop.sh &> /dev/null &" RETVAL=$? if [ $RETVAL -eq 0 ] ; then - # wait for server to be confirmed as halted in logfile - STATUSTEST=0 - ITERATIONS=0 - while [ $STATUSTEST -eq 0 ] ; do + # wait for server to be confirmed as halted in logfile + STATUSTEST=0 + ITERATIONS=0 + while [ $STATUSTEST -eq 0 ] ; do sleep 2 tail -n 9 $LASTLOG | grep -q "$STOPMESSAGE" && STATUSTEST=1 echo -n "." ITERATIONS=`expr $ITERATIONS + 1` if [ $ITERATIONS -gt $MAXITERATIONS ] then - break + break fi - done - if [ $STATUSTEST -eq 0 ] - then + done + if [ $STATUSTEST -eq 0 ] + then log_warning_msg "Service hasn't stopped within the timeout allowed, please review file $LASTLOG to see the status of the service" - else + log_warning_msg "Trying direct kill with signal -15" + # Adempiere didn't finish - try direct kill with signal 15, then signal 9 + kill -15 `ps ax | grep -v grep | grep $EXECDIR | sed -e 's/^ *//g' | cut -f 1 -d " "` + sleep 5 + getadempierestatus + if [ $ADEMPIERESTATUS -ne 0 ] ; then + log_success_msg "Service stopped with kill -15" + else + echo "Trying direct kill with signal -9" + kill -9 `ps ax | grep -v grep | grep $EXECDIR | sed -e 's/^ *//g' | cut -f 1 -d " "` + sleep 5 + getadempierestatus + if [ $ADEMPIERESTATUS -ne 0 ] ; then + log_success_msg "Service stopped with kill -9" + else + log_warning_msg "Service hasn't stopped" + fi + fi + else log_success_msg "Service stopped" - fi - echo + fi + echo else - log_failure_msg "Service not stopped" - echo + log_failure_msg "Service not stopped" + echo fi return $RETVAL } restart () { - stop - sleep 1 - start + stop + sleep 1 + start } condrestart () { getadempierestatus if [ $ADEMPIERESTATUS -eq 0 ] ; then - restart + restart fi } rhstatus () { getadempierestatus if [ $ADEMPIERESTATUS -eq 0 ] ; then - echo - echo "ADempiere is running:" - ps ax | grep -v grep | grep $EXECDIR | sed 's/^[[:space:]]*\([[:digit:]]*\).*:[[:digit:]][[:digit:]][[:space:]]\(.*\)/\1 \2/' - echo + echo + echo "ADempiere is running:" + ps ax | grep -v grep | grep $EXECDIR | sed 's/^[[:space:]]*\([[:digit:]]*\).*:[[:digit:]][[:digit:]][[:space:]]\(.*\)/\1 \2/' + echo else - echo "ADempiere is stopped" + echo "ADempiere is stopped" fi } case "$1" in - start) - start - ;; - - stop) - stop - ;; - - reload) - restart - ;; - - restart) - restart - ;; - - condrestart) - condrestart - ;; - - status) - rhstatus - ;; - - *) - echo $"Usage: $0 {start|stop|reload|restart|condrestart|status}" - exit 1 + start) + start + ;; + stop) + stop + ;; + reload) + restart + ;; + restart) + restart + ;; + condrestart) + condrestart + ;; + status) + rhstatus + ;; + *) + echo $"Usage: $0 {start|stop|reload|restart|condrestart|status}" + exit 1 esac - + exit 0 diff --git a/utils/unix/adempiere_RedHat.sh b/utils/unix/adempiere_RedHat.sh index 449e492c00..a1d72af159 100644 --- a/utils/unix/adempiere_RedHat.sh +++ b/utils/unix/adempiere_RedHat.sh @@ -21,7 +21,7 @@ EXECDIR=/home/adempiere/Adempiere ENVFILE=/home/adempiere/.bash_profile ADEMPIEREUSER=adempiere # STOPMESSAGE="Halting VM" # Message when using java 5 -STOPMESSAGE="INFO.*\[Server\].*Shutting down the server" # Message when using java 6 +STOPMESSAGE="INFO.*Server\].*Shutdown complete" # Message when using java 6 . /etc/rc.d/init.d/functions @@ -53,12 +53,12 @@ start () { ITERATIONS=0 while [ $STATUSTEST -eq 0 ] ; do sleep 2 - tail -n 5 $LOGFILE | grep -q 'INFO.*\[Server\].*Started in' && STATUSTEST=1 + tail -n 9 $LOGFILE | grep -q 'INFO.*\[Server\].*Started in' && STATUSTEST=1 echo -n "." ITERATIONS=`expr $ITERATIONS + 1` if [ $ITERATIONS -gt $MAXITERATIONS ] - then - break + then + break fi done if [ $STATUSTEST -eq 0 ] @@ -84,7 +84,8 @@ stop () { fi echo -n "Stopping ADempiere ERP: " source $ENVFILE - export LASTLOG=`ls -t $ADEMPIERE_HOME/jboss/server/adempiere/log/adempiere_??????????????.log | head -1` + # export LASTLOG=`ls -t $ADEMPIERE_HOME/jboss/server/adempiere/log/adempiere_??????????????.log | head -1` + export LASTLOG=$ADEMPIERE_HOME/jboss/server/adempiere/log/server.log su $ADEMPIEREUSER -c "cd $EXECDIR/utils;$EXECDIR/utils/RUN_Server2Stop.sh &> /dev/null &" RETVAL=$? if [ $RETVAL -eq 0 ] ; then @@ -98,13 +99,30 @@ stop () { ITERATIONS=`expr $ITERATIONS + 1` if [ $ITERATIONS -gt $MAXITERATIONS ] then - break + break fi done if [ $STATUSTEST -eq 0 ] then echo "Service hasn't stopped within the timeout allowed, please review file $LASTLOG to see the status of the service" - echo_warning + echo "Trying direct kill with signal -15" + # Adempiere didn't finish - try direct kill with signal 15, then signal 9 + kill -15 `ps ax | grep -v grep | grep $EXECDIR | sed -e 's/^ *//g' | cut -f 1 -d " "` + sleep 5 + getadempierestatus + if [ $ADEMPIERESTATUS -ne 0 ] ; then + echo_success + else + echo "Trying direct kill with signal -9" + kill -9 `ps ax | grep -v grep | grep $EXECDIR | sed -e 's/^ *//g' | cut -f 1 -d " "` + sleep 5 + getadempierestatus + if [ $ADEMPIERESTATUS -ne 0 ] ; then + echo_success + else + echo_warning + fi + fi else echo_success fi @@ -118,7 +136,7 @@ stop () { restart () { stop - sleep 1 + sleep 2 start } @@ -144,10 +162,10 @@ rhstatus () { case "$1" in start) start - ;; + ;; stop) stop - ;; + ;; reload) restart ;; @@ -161,8 +179,8 @@ case "$1" in rhstatus ;; *) - echo $"Usage: $0 {start|stop|reload|restart|condrestart|status}" - exit 1 + echo $"Usage: $0 {start|stop|reload|restart|condrestart|status}" + exit 1 esac - + exit 0