mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-07 21:01:37 +00:00
Improved run engine and moved on separated module
+ Also added some example script to create your own restart script
This commit is contained in:
@@ -10,7 +10,7 @@ fi
|
|||||||
|
|
||||||
function ac_on_after_build() {
|
function ac_on_after_build() {
|
||||||
# move the run engine
|
# move the run engine
|
||||||
cp -rvf "$AC_PATH_BIN/runners/"* "$INSTALL_PATH/bin/"
|
cp -rvf "$AC_PATH_MODULES/acore/startup-scripts/"* "$INSTALL_PATH/bin/"
|
||||||
}
|
}
|
||||||
|
|
||||||
registerHooks "ON_AFTER_BUILD" ac_on_after_build
|
registerHooks "ON_AFTER_BUILD" ac_on_after_build
|
||||||
|
|||||||
@@ -1,70 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
function checkStatus() {
|
|
||||||
# wipe do : destroy old screens + ls
|
|
||||||
screen -wipe
|
|
||||||
if screen -ls $1 | grep -q "No Sockets found"
|
|
||||||
then
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function starter() {
|
|
||||||
local CURRENT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
|
|
||||||
cd $BINPATH
|
|
||||||
|
|
||||||
mkdir -p "$LOGS_PATH"
|
|
||||||
|
|
||||||
TRACE_BEGIN_STRING="SIGSEGV"
|
|
||||||
TRACE_FILE="$LOGS_PATH/"$SCREEN_NAME"_trace.log"
|
|
||||||
ERR_FILE="$LOGS_PATH/"$SCREEN_NAME"_error.log"
|
|
||||||
SYSLOG="$LOGS_PATH/"$SCREEN_NAME"_system.log"
|
|
||||||
SYSERR="$LOGS_PATH/"$SCREEN_NAME"_system.err"
|
|
||||||
LINKS_FILE="$LOGS_PATH/"$SCREEN_NAME"_crash_links.link"
|
|
||||||
|
|
||||||
$CURRENT_PATH/starter $SERVERBIN $GDB "$CONFIG" "$SYSLOG" "$SYSERR" $GDB_ENABLED
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function restarter() {
|
|
||||||
local CURRENT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
cd $BINPATH
|
|
||||||
|
|
||||||
mkdir -p "$LOGS_PATH"
|
|
||||||
|
|
||||||
TRACE_BEGIN_STRING="SIGSEGV"
|
|
||||||
TRACE_FILE="$LOGS_PATH/"$SCREEN_NAME"_trace.log"
|
|
||||||
ERR_FILE="$LOGS_PATH/"$SCREEN_NAME"_error.log"
|
|
||||||
SYSLOG="$LOGS_PATH/"$SCREEN_NAME"_system.log"
|
|
||||||
SYSERR="$LOGS_PATH/"$SCREEN_NAME"_system.err"
|
|
||||||
LINKS_FILE="$LOGS_PATH/"$SCREEN_NAME"_crash_links.link"
|
|
||||||
|
|
||||||
if [ ! -f $TRACE_FILE ]; then
|
|
||||||
touch $TRACE_FILE
|
|
||||||
fi
|
|
||||||
|
|
||||||
while :
|
|
||||||
do
|
|
||||||
if checkStatus $SCREEN_NAME; then
|
|
||||||
DATE=$(date)
|
|
||||||
echo "Restarting $SCREEN_NAME Core blizz($DATE)"
|
|
||||||
echo $PID
|
|
||||||
if [ $GDB_ENABLED -eq 1 ]; then
|
|
||||||
echo "GDB enabled"
|
|
||||||
grep -B 10 -A 1800 "$TRACE_BEGIN_STRING" "$SYSLOG" >> "$TRACE_FILE"
|
|
||||||
cat "$SYSERR" > "$ERR_FILE"
|
|
||||||
screen -A -m -d -S $SCREEN_NAME "$CURRENT_PATH/starter" $SERVERBIN $GDB "$CONFIG" "$SYSLOG" "$SYSERR" 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $GDB_ENABLED -eq 0 ]; then
|
|
||||||
echo "GDB disabled"
|
|
||||||
screen -A -m -d -S $SCREEN_NAME "$CURRENT_PATH/starter" $SERVERBIN null "$CONFIG" null null 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
sleep 15
|
|
||||||
done
|
|
||||||
}
|
|
||||||
36
modules/acore/startup-scritps/conf.sh.dist
Normal file
36
modules/acore/startup-scritps/conf.sh.dist
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# enable/disable GDB execution
|
||||||
|
export GDB_ENABLED=0
|
||||||
|
|
||||||
|
# gdb file
|
||||||
|
export GDB=""
|
||||||
|
|
||||||
|
# directory where binary are stored
|
||||||
|
export BINPATH=""
|
||||||
|
|
||||||
|
### Put here the pid you configured on your worldserver.conf file ###
|
||||||
|
export SERVERPID=""
|
||||||
|
|
||||||
|
# path to conf file
|
||||||
|
export CONFIG=""
|
||||||
|
|
||||||
|
# path of log files
|
||||||
|
export LOGS_PATH="";
|
||||||
|
|
||||||
|
# exec name
|
||||||
|
export SERVERBIN=""
|
||||||
|
|
||||||
|
# prefix name for log files
|
||||||
|
export LOG_PREFIX_NAME=""
|
||||||
|
|
||||||
|
# name of screen service ( for restarter )
|
||||||
|
# if no specified, screen util won't be used
|
||||||
|
export SCREEN_NAME=""
|
||||||
|
|
||||||
|
# overwrite default screen options: -A -m -d -S
|
||||||
|
export SCREEN_OPTIONS=""
|
||||||
|
|
||||||
|
# enable it to show the output
|
||||||
|
# within console
|
||||||
|
export WITH_CONSOLE=0
|
||||||
|
|
||||||
|
|
||||||
14
modules/acore/startup-scritps/examples/restarter-auth.sh
Normal file
14
modules/acore/startup-scritps/examples/restarter-auth.sh
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
$PATH_RUNENGINE=""
|
||||||
|
|
||||||
|
source $PATH_RUNENGINE/run-engine
|
||||||
|
|
||||||
|
# you must create your conf
|
||||||
|
# copying conf.sh.dist
|
||||||
|
# and renaming as below
|
||||||
|
source ./conf-auth.sh
|
||||||
|
|
||||||
|
restarter
|
||||||
|
|
||||||
|
|
||||||
14
modules/acore/startup-scritps/examples/restarter-world.sh
Normal file
14
modules/acore/startup-scritps/examples/restarter-world.sh
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
$PATH_RUNENGINE=""
|
||||||
|
|
||||||
|
source $PATH_RUNENGINE/run-engine
|
||||||
|
|
||||||
|
# you must create your conf
|
||||||
|
# copying conf.sh.dist
|
||||||
|
# and renaming as below
|
||||||
|
source ./conf-world.sh
|
||||||
|
|
||||||
|
restarter
|
||||||
|
|
||||||
|
|
||||||
14
modules/acore/startup-scritps/examples/starter-auth.sh
Normal file
14
modules/acore/startup-scritps/examples/starter-auth.sh
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
$PATH_RUNENGINE=""
|
||||||
|
|
||||||
|
source $PATH_RUNENGINE/run-engine
|
||||||
|
|
||||||
|
# you must create your conf
|
||||||
|
# copying conf.sh.dist
|
||||||
|
# and renaming as below
|
||||||
|
source ./conf-auth.sh
|
||||||
|
|
||||||
|
starter
|
||||||
|
|
||||||
|
|
||||||
14
modules/acore/startup-scritps/examples/starter-world.sh
Normal file
14
modules/acore/startup-scritps/examples/starter-world.sh
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
$PATH_RUNENGINE=""
|
||||||
|
|
||||||
|
source $PATH_RUNENGINE/run-engine
|
||||||
|
|
||||||
|
# you must create your conf
|
||||||
|
# copying conf.sh.dist
|
||||||
|
# and renaming as below
|
||||||
|
source ./conf-world.sh
|
||||||
|
|
||||||
|
starter
|
||||||
|
|
||||||
|
|
||||||
102
modules/acore/startup-scritps/run-engine
Normal file
102
modules/acore/startup-scritps/run-engine
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
export RUN_ENGINE_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
# load default conf
|
||||||
|
if [ -e "$RUN_ENGINE_PATH/conf.dist" ]; then
|
||||||
|
source "$RUN_ENGINE_PATH/conf.sh.dist"
|
||||||
|
fi
|
||||||
|
|
||||||
|
function configureFiles() {
|
||||||
|
TRACE_BEGIN_STRING="SIGSEGV"
|
||||||
|
TRACE_FILE="$LOGS_PATH/"$LOG_PREFIX_NAME"_trace.log"
|
||||||
|
ERR_FILE="$LOGS_PATH/"$LOG_PREFIX_NAME"_error.log"
|
||||||
|
SYSLOG="$LOGS_PATH/"$LOG_PREFIX_NAME"_system.log"
|
||||||
|
SYSERR="$LOGS_PATH/"$LOG_PREFIX_NAME"_system.err"
|
||||||
|
LINKS_FILE="$LOGS_PATH/"$LOG_PREFIX_NAME"_crash_links.link"
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkStatus() {
|
||||||
|
local ret=1
|
||||||
|
# wipe do : destroy old screens + ls
|
||||||
|
screen -wipe
|
||||||
|
if screen -ls $1 | grep -q "No Sockets found"
|
||||||
|
then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
local gdbres=$(pgrep -f "gdb -x $GDB --batch $SERVERBIN")
|
||||||
|
if [[ $GDB_ENABLED -eq 0 && -z $gdbres ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# This is a specific check for Azeroth Core in case of screen failure
|
||||||
|
# It is possible since same binary file cannot be launched with same configuration file
|
||||||
|
# This is an extra check
|
||||||
|
#
|
||||||
|
local binres=$(pgrep -f "$SERVERBIN -c $CONFIG")
|
||||||
|
if [ -z $binres ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function run() {
|
||||||
|
echo $1
|
||||||
|
if [ ! -z $1 ]; then
|
||||||
|
local OPTIONS="-A -m -d -S"
|
||||||
|
if [ ! -z "$SCREEN_OPTIONS" ]; then
|
||||||
|
OPTIONS=$SCREEN_OPTIONS
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "> Starting with screen ( screen $OPTIONS )"
|
||||||
|
|
||||||
|
screen $OPTIONS $1 "$RUN_ENGINE_PATH/starter" $2 $3 "$4" "$5" "$6" $7
|
||||||
|
else
|
||||||
|
$RUN_ENGINE_PATH/starter $2 $3 "$4" "$5" "$6" $7
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function starter() {
|
||||||
|
cd $BINPATH
|
||||||
|
|
||||||
|
mkdir -p "$LOGS_PATH"
|
||||||
|
|
||||||
|
configureFiles
|
||||||
|
|
||||||
|
run "$SCREEN_NAME" "$SERVERBIN" "$GDB" "$CONFIG" "$SYSLOG" "$SYSERR" "$GDB_ENABLED"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function restarter() {
|
||||||
|
cd $BINPATH
|
||||||
|
|
||||||
|
mkdir -p "$LOGS_PATH"
|
||||||
|
|
||||||
|
configureFiles
|
||||||
|
|
||||||
|
if [ ! -f $TRACE_FILE ]; then
|
||||||
|
touch $TRACE_FILE
|
||||||
|
fi
|
||||||
|
|
||||||
|
while :
|
||||||
|
do
|
||||||
|
if checkStatus $SCREEN_NAME; then
|
||||||
|
DATE=$(date)
|
||||||
|
echo "Restarting $SCREEN_NAME Core blizz($DATE)"
|
||||||
|
if [ $GDB_ENABLED -eq 1 ]; then
|
||||||
|
echo "GDB enabled"
|
||||||
|
grep -B 10 -A 1800 "$TRACE_BEGIN_STRING" "$SYSLOG" >> "$TRACE_FILE"
|
||||||
|
cat "$SYSERR" > "$ERR_FILE"
|
||||||
|
run "$SCREEN_NAME" "$SERVERBIN" "$GDB" "$CONFIG" "$SYSLOG" "$SYSERR" 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $GDB_ENABLED -eq 0 ]; then
|
||||||
|
echo "GDB disabled"
|
||||||
|
run "$SCREEN_NAME" "$SERVERBIN" null "$CONFIG" null null 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 10
|
||||||
|
done
|
||||||
|
}
|
||||||
@@ -15,7 +15,13 @@ if [ $GBD_ENABLED -eq 1 ]; then
|
|||||||
[ ! -f "$SYSLOG" ] && touch "$SYSLOG"
|
[ ! -f "$SYSLOG" ] && touch "$SYSLOG"
|
||||||
[ ! -f "$SYSERR" ] && touch "$SYSERR"
|
[ ! -f "$SYSERR" ] && touch "$SYSERR"
|
||||||
|
|
||||||
|
if [ $WITH_CONSOLE -eq 0 ]; then
|
||||||
gdb -x $GDB_FILE --batch $1 >> "$SYSLOG" 2>> "$SYSERR"
|
gdb -x $GDB_FILE --batch $1 >> "$SYSLOG" 2>> "$SYSERR"
|
||||||
|
else
|
||||||
|
echo "> Console enabled"
|
||||||
|
gdb -x $GDB_FILE --batch $1 > >(tee ${SYSLOG}) 2> >(tee ${SYSERR} >&2)
|
||||||
|
fi
|
||||||
|
|
||||||
elif [ $GBD_ENABLED -eq 0 ]; then
|
elif [ $GBD_ENABLED -eq 0 ]; then
|
||||||
"./$1" -c "$CONFIG"
|
"./$1" -c "$CONFIG"
|
||||||
fi
|
fi
|
||||||
Reference in New Issue
Block a user