#!/bin/sh
MNAME=`uname -n`
OKCHAT_HOME="/public/chat/server"
LOG_DIR=$OKCHAT_HOME
LOG_FILE_LINK=$LOG_DIR/current.log
JAVA_HOME="/usr/lib/jdk1.2.2/bin"
PID_FILE=$OKCHAT_HOME/okchat.pid
LOCK_FILE=$OKCHAT_HOME/OKCHAT.LCK
ALIVE_FILE=$OKCHAT_HOME/server.alive
RESTART_DELAY=30
CHECK_DELAY=10
case "$1" in
'stop')
echo "Explicitly stop called";
rm -f $PID_FILE 2>/dev/null;
for PIDS in `ps -jef | grep okchat | grep /usr/lib/jdk1.2.2 | awk '{ print $2 }' `;
do
echo "Killing PID $PIDS"
kill -9 $PIDS;
done
echo "done"
;;
'status')
ERROR=0;
echo "checking for running startokchat.sh";
if (test -z "`ps -jef | grep 'startokchat.sh start CLEAN' `");
then
echo "Restarting startokchat.sh in background";
nohup $OKCHAT_HOME/startokchat.sh start CLEAN &
exit 1;
fi
echo "check for running okchat"
if (test -z "`ps -jef | grep root | grep java `");
then
echo "No JVMs found";
ERROR=1;
fi
echo "check for alive file"
if (test ! -e $ALIVE_FILE);
then
echo "No $ALIVE_FILE found";
ERROR=1;
else
echo "Dont start $0 status the next 20 seconds - thanks";
rm -rf $ALIVE_FILE;
fi
if ($ERROR -eq 0);
then
echo "OkChat OK";
exit 0;
else
echo "Error occured - killing all JVMs";
$0 stop
exit 1;
fi
;;
'start')
# test if exists PID
if (test -f "$PID_FILE" )
then
if [ $2 = "CLEAN" ];
then
rm -rf $PID_FILE;
else
echo "Found PID file $PID_FILE - check okchat"
exit 1
fi
fi
while (true);
do
echo
echo "==============================="
echo "Restarted at: `date`"
echo
LOG_FILE="start_log.`date +"%H%M_%d%m"`"
# delay startup
while (test -e "$LOCK_FILE");
do
#echo "Lockfile $LOCK_FILE exists - suspending for $CHECK_DELAY seconds";
sleep $CHECK_DELAY;
done
# compressing logs
echo "Removing logfile link $LOG_FILE_LINK...";
rm $LOG_FILE_LINK 2>&1 >/dev/null ;
echo "done";
echo "Starting jvm..."
$JAVA_HOME/java -classpath .:$OKCHAT_HOME ChatServer debug 2>&1 >$LOG_FILE &
echo "setting up link $LOG_FILE_LINK --> $LOG_FILE"
ln -s $LOG_FILE $LOG_FILE_LINK
echo "Waiting for PID $!";
echo $! > $PID_FILE ;
wait $! ;
rm -rf $PID_FILE
echo "sleeping $RESTART_DELAY seconds before restart"
sleep $RESTART_DELAY
done
echo "Ooops - shouldn't happen"
$0 stop
;;
'restart')
$0 stop
;;
'log')
tail -f $LOG_FILE_LINK
;;
'startlog')
tail -f $OKCHAT_HOME/nohup.out
;;
*)
echo "usage: $0 {stop|start|restart|log}"
;;
esac
exit 0