1#!/bin/sh 2# Runserv, by Chris Atenasio 3# Upgraded to store server logs by evileye 4# Modified by mikaelh 5# Added protection of compressed previous log file on crash - C. Blue 6 7PIDFILE=lib/data/tomenet.pid 8PATH=/bin:/usr/bin:/usr/local/bin 9CRASHES=0 10CRASHES_START_TIME=`date +%s` 11 12#cd /home/$USER/tomenet 13ulimit -c unlimited 14 15crash_check () { 16 TIMESTAMP=`date +%s` 17 if [ `expr $TIMESTAMP - $CRASHES_START_TIME` -gt 60 ] ; then 18 # reset the counter 19 CRASHES=0 20 CRASHES_START_TIME=$TIMESTAMP 21 fi 22 (( CRASHES += 1 )) 23 if [ $CRASHES -gt 5 ] ; then 24 echo "More than 5 crashes within 60 seconds, exiting..." 25 exit 26 fi 27} 28 29files_check () { 30 TIME=`date +"%Y%m%d%H%M%S"` 31 if [ -f core ] ; then 32 mv core cores/core.$TIME 33 fi 34 if [ -f tomenet.server.core ] ; then 35 mv tomenet.server.core cores/core.$TIME 36 fi 37 if [ -f lib/data/tomenet.log ] ; then 38 bzip2 lib/data/tomenet.log 39 # Don't overwrite compressed log file of same timestamp, 40 # which would likely have resulted result from a crash. 41 # Instead, add seconds to time stamp to save the new file. - C. Blue 42 if [ -f lib/data/`date +"%Y%m%d%H%M.log.bz2"` ] ; then 43 mv lib/data/tomenet.log.bz2 lib/data/`date +"%Y%m%d%H%M%S.log.bz2"` 44 else 45 mv lib/data/tomenet.log.bz2 lib/data/`date +"%Y%m%d%H%M.log.bz2"` 46 fi 47 fi 48} 49 50if [ -f $PIDFILE ] ; then 51 TOMENETPID=`cat $PIDFILE` 52 if [ `ps ux | grep "\./tomenet\.server" | grep " $TOMENETPID " | grep -v -c grep` = 1 ] 53 then 54 echo "Server is already running, exiting..." 55 exit 56 fi 57fi 58 59files_check 60 61while :; do 62 killall -9 tomenet 63 killall -9 evilmeta 64 65 ./tomenet.server 66 files_check 67 crash_check 68 69 sleep 1 70done 71