diff options
Diffstat (limited to 'tools/bin')
-rwxr-xr-x | tools/bin/restart-all | 21 | ||||
-rw-r--r-- | tools/bin/restart-config | 25 | ||||
-rwxr-xr-x | tools/bin/restart-login | 3 | ||||
-rwxr-xr-x | tools/bin/restart-pid | 44 | ||||
-rwxr-xr-x | tools/bin/restart-world | 28 |
5 files changed, 121 insertions, 0 deletions
diff --git a/tools/bin/restart-all b/tools/bin/restart-all new file mode 100755 index 00000000..5d7e2425 --- /dev/null +++ b/tools/bin/restart-all @@ -0,0 +1,21 @@ +#!/bin/bash -e +source restart-config +if test -n "$REBUILD" +then + cd $SERVER_SOURCE + git pull + make + make install prefix=${HOME} +fi + +restart-login $LOGIN_WORLD + +for world in ${AUTO_WORLDS[@]} +do + restart-world $world --auto +done + +for world in ${MANUAL_WORLDS[@]} +do + restart-world $world --manual +done diff --git a/tools/bin/restart-config b/tools/bin/restart-config new file mode 100644 index 00000000..e19ab314 --- /dev/null +++ b/tools/bin/restart-config @@ -0,0 +1,25 @@ +## TMW restart script settings +## This file must be in ~/bin/ even though it's not executable + +## Mandatory filepath settings +SERVER_SOURCE=~/eathena +LOGIN_WORLD=~/tmwa-server-data +AUTO_WORLDS=( + ~/tmwa-server-data +) +MANUAL_WORLDS=( + ~/tmwa-server-test +) +## Boolean settings (nonempty for true) +## if not specified here, the value from the environment is used, +## which is probably empty (false). However, some scripts may +## provide command-line options to override the defaults. + +## Should the servers print their output to the terminal? +# VERBOSE=yep + +## Should server sources be rebuilt? +# REBUILD=sure + +## Should server data be pulled? +# PULL=certainly diff --git a/tools/bin/restart-login b/tools/bin/restart-login new file mode 100755 index 00000000..765fe248 --- /dev/null +++ b/tools/bin/restart-login @@ -0,0 +1,3 @@ +#!/bin/bash -e +cd "$1" +restart-pid login-server diff --git a/tools/bin/restart-pid b/tools/bin/restart-pid new file mode 100755 index 00000000..498bdcc4 --- /dev/null +++ b/tools/bin/restart-pid @@ -0,0 +1,44 @@ +#!/bin/bash -e +# do nasty work here +# The job of this script is twofold: +# 1. kill the existing server, if it exists +# 2. write the PID file and start the new server + +source restart-config + +PROCESS=$1 + +if test -f $PROCESS.pid +then + # if the process ID may change its name (e.g. via exec), + # then remove '$PROCESS' on the following line + PID=$(pgrep $PROCESS -u $UID -F $PROCESS.pid || true) + if test -n "$PID" + then + kill $PID + echo waiting for $PID to die so I can restart $PROCESS + while + ! kill -s 0 $PID + do + echo -n . + sleep 1 + done + # This shouldn't be necessary, but somehow is + sleep 2 + echo + else + echo $PROCESS.pid does not point to a valid process - nothing killed + fi +else + echo No PID file $PROCESS.pid found - nothing killed +fi + +if test -z "$VERBOSE" +then + exec >/dev/null 2>&1 +fi + +{ + # $$ is not reset in subshells + exec sh -c 'echo $$ > '$PROCESS'.pid; exec ./'$PROCESS +} & diff --git a/tools/bin/restart-world b/tools/bin/restart-world new file mode 100755 index 00000000..7fead17f --- /dev/null +++ b/tools/bin/restart-world @@ -0,0 +1,28 @@ +#!/bin/bash -e +cd "$1" +shift + +source restart-config + +for ARG +do + if [ "$ARG" = --auto ] + then + PULL=y + elif [ "$ARG" = --manual ] + then + PULL= + else + echo unknown argument + exit 1 + fi +done + +if test -n "$PULL" +then + git pull + (cd world/map/conf; cat magic.conf.template | ./spells-build > magic.conf) +fi + +restart-pid char-server +restart-pid map-server |