52 lines
1.3 KiB
Bash
Executable file
52 lines
1.3 KiB
Bash
Executable file
#!/bin/sh
|
|
die() { echo >&2 "$@"; exit 1; }
|
|
dietail() {
|
|
echo >&2 "$@"
|
|
echo >&2 "tail $LOG:"
|
|
tail $LOG
|
|
exit 1
|
|
}
|
|
[ $# -ge 1 ] || die "Usage: $0 <server version> [<additional parameters for campaignd>]"
|
|
|
|
VERSION=$1
|
|
shift
|
|
PARAMETERS="$@"
|
|
|
|
case $VERSION in
|
|
1.9|1.12)
|
|
THREADS=4
|
|
;;
|
|
*)
|
|
THREADS=2
|
|
;;
|
|
esac
|
|
|
|
SERVERBASE=$HOME/campaignd/$VERSION
|
|
|
|
[ -d "$SERVERBASE" ] || die "Server '$VERSION' not found."
|
|
[ -r "$SERVERBASE"/COPYING.txt ] || die "GPL file (COPYING.txt) is missing."
|
|
[ -r "$SERVERBASE"/server.cfg ] || die "server.cfg is missing, is the server correctly configured? Aborting..."
|
|
[ -d "$SERVERBASE/data" ] || mkdir "$SERVERBASE/data"
|
|
[ -d "$SERVERBASE/logs" ] || mkdir "$SERVERBASE/logs"
|
|
|
|
ulimit -c unlimited
|
|
|
|
cd $SERVERBASE || exit 1
|
|
|
|
while [ true ]
|
|
do
|
|
DATE=$(date +"%Y%m%d-%H%M%S")
|
|
COMMAND="$HOME/bin/campaignd-$VERSION $THREADS $PARAMETERS"
|
|
LOG="$SERVERBASE/logs/campaignd.$DATE.log"
|
|
mv "$SERVERBASE/current.log" "$SERVERBASE/old.log" > /dev/null 2>&1
|
|
ln -s "$LOG" "$SERVERBASE/current.log"
|
|
echo "started $VERSION campaignd with command: '$COMMAND' logging to: $LOG"
|
|
$COMMAND > $LOG 2>&1
|
|
EXIT_CODE="$?"
|
|
echo "exit code: $EXIT_CODE"
|
|
mv gmon.out gmon.$DATE.out > /dev/null 2>&1
|
|
case $EXIT_CODE in
|
|
0) exit ;;
|
|
1|2|127) dietail ;; #"File I/O error." #"Could not parse config file." #cannot open shared object file
|
|
esac
|
|
done
|