ARMA_DIR=.
CONFIG=server.cfg
PORT=2302
PIDFILE=${ARMA_DIR}/${PORT}.pid
RUNFILE=${ARMA_DIR}/${PORT}.run
LOGFILE=${ARMA_DIR}/log.${PORT}.txt
SERVER=${ARMA_DIR}/server
MOD="-mod=@cba;@ace;@acex;@acex_usnavy;@acex_ru"
ulimit -c 1000000
case "$1" in
start)
if [ -f ${RUNFILE} ]; then
$0 stop
fi
echo "Starting ArmA 2 server..."
echo "go" >${RUNFILE}
nohup </dev/null >/dev/null $0 watchdog &
;;
stop)
echo "Stopping ArmA 2 server..."
if [ -f ${RUNFILE} ]; then
rm -f ${RUNFILE}
fi
if [ -f ${PIDFILE} ]; then
kill -TERM $(< ${PIDFILE})
if [ -f ${PIDFILE} ]; then
rm -f ${PIDFILE}
fi
fi
;;
status)
if [ -f ${RUNFILE} ]; then
echo "Server should be running..."
else
echo "Server should not be running..."
fi
if [ -f ${PIDFILE} ]; then
PID=$(< ${PIDFILE})
echo "PID file exists (PID=${PID})..."
if [ -f /proc/${PID}/cmdline ]; then
echo "Server process seems to be running..."
fi
fi
;;
check)
echo -n "ArmA 2 directory: ${ARMA_DIR} "
if [ -d ${ARMA_DIR} ]; then
echo "OK"
else
echo "MISSING!"
fi
echo -n "Server executable: ${SERVER} "
if [ -x ${SERVER} ]; then
echo "OK"
else
echo "ERROR!"
fi
echo "Port number: ${PORT}"
echo -n "Config file: ${CONFIG} "
if [ -f ${CONFIG} ]; then
echo "OK"
else
echo "MISSING!"
fi
echo "PID file: ${PIDFILE}"
echo "RUN file: ${RUNFILE}"
;;
restart)
$0 stop
$0 start
;;
watchdog)
while [ -f ${RUNFILE} ]; do
cd ${ARMA_DIR}
echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Starting server (port ${PORT})..."
${SERVER} >>${LOGFILE} 2>&1 -config=${CONFIG} -port=${PORT} -pid=${PIDFILE} ${MOD}
if [ -f ${RUNFILE} ]; then
echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Server died, waiting to restart..."
sleep 5s
else
echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Server shutdown intentional, watchdog terminating"
fi
done
;;
*)
echo "$0 (start|stop|restart|status|check)"
;;
esac