#!/bin/sh die() { echo >&2 "$@" exit 1 } dietail() { echo >&2 "$@" echo >&2 "tail $LOG:" tail $LOG exit 1 } [ $# -ge 1 ] || die "Usage: $0 []" VERSION=$1 shift PARAMETERS="$@" case $VERSION in 1.4|1.6) 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." [ -d "$SERVERBASE/data" ] || die "Server '$VERSION' has no data/ dir." [ -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" echo "started $VERSION campaignd with command: '$COMMAND' logging to: $LOG" $COMMAND &> $LOG EXIT_CODE="$?" echo "exit code: $EXIT_CODE" mv gmon.out gmon.$DATE.out &> /dev/null case $EXIT_CODE in 0) exit ;; 1|2|3|127) dietail ;; #"File I/O error." #"Could not parse config file." #"Could not bind to port." #cannot open shared object file esac done