From d9084bd8a24c74b2cec2a7e1cb014a110d28262a Mon Sep 17 00:00:00 2001 From: Peter 'Pita' Martischka Date: Mon, 11 Jul 2011 18:56:29 +0200 Subject: [PATCH] Added a runSafe script that restarts ep-lite if its failing --- bin/runSafe.sh | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 bin/runSafe.sh diff --git a/bin/runSafe.sh b/bin/runSafe.sh new file mode 100755 index 000000000..5db1e960d --- /dev/null +++ b/bin/runSafe.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +#This script ensures that ep-lite is automatically restarting after an error happens + +#Handling Errors +# 0 silent +# 1 email +ERROR_HANDLING=0 +# Your email address which should recieve the error messages +EMAIL_ADDRESS="no-reply@example.com" +# Sets the minimun amount of time betweens the sending of error emails. +# This ensures you not get spamed while a endless reboot loop +# It's the time in seconds +TIME_BETWEEN_EMAILS=600 # 10 minutes + +# DON'T EDIT AFTER THIS LINE + +LAST_EMAIL_SEND=0 + +#Move to the folder where ep-lite is installed +FOLDER=$(dirname $(readlink -f $0)) +cd $FOLDER + +#Was this script started in the bin folder? if yes move out +if [ -d "../bin" ]; then + cd "../" +fi + +#check if a logfile parameter is set +if [ -z "$1" ]; then + echo "Set a logfile as the first parameter" + exit 1 +fi + +while [ 1 ] +do + #try to touch the file if it doesn't exist + if [ ! -f $1 ]; then + touch $1 || echo "Logfile '$1' is not writeable" && exit 1 + fi + + #check if the file is writeable + if [ ! -w $1 ]; then + echo "Logfile '$1' is not writeable" + exit 1 + fi + + #start the application + bin/run.sh >>$1 2>>$1 + + #Send email + if [ $ERROR_HANDLING == 1 ]; then + TIME_NOW=$(date +%s) + TIME_SINCE_LAST_SEND=$(($TIME_NOW - $LAST_EMAIL_SEND)) + + if [ $TIME_SINCE_LAST_SEND -gt $TIME_BETWEEN_EMAILS ]; then + echo -e "Server was restared at: $(date)\nThe last 50 lines of the log before the error happens:\n $(tail -n 50 $1)" | mail -s "Pad Server was restarted" $EMAIL_ADDRESS + + LAST_EMAIL_SEND=$TIME_NOW + fi + fi + + echo "RESTART!" >>$1 + + #Sleep 10 seconds before restart + sleep 10 +done