#!/bin/bash # # armaserver: ArmA 2 Linux Dedicated Server Control Script # (c) 2010 BIStudio # ArmA 2 binary version must be 1.04 or later # #======================================================================= #======== CONFIGURATION PARAMETERS ======== #======== MUST BE EDITED MANUALLY TO FIT YOUR SYSTEM PARAMETERS ======== #======================================================================= ARMA_DIR=/home/u224835/arma2operationarrowhead CONFIG=server.cfg PORT=2302 PIDFILE=${ARMA_DIR}/${PORT}.pid RUNFILE=${ARMA_DIR}/${PORT}.run LOGFILE=${ARMA_DIR}/log.${PORT}.txt SERVER=/home/u224835/arma2operationarrowhead/server OTHERPARAMS=-cpucount=2 #======================================================================= ulimit -c 1000000 case "$1" in start) if [ -f ${RUNFILE} ]; then $0 stop fi echo "Starting ArmA 2 server..." # file to mark we want server running... echo "go" >${RUNFILE} # launch the background watchdog process to run the server nohup /dev/null $0 watchdog & ;; stop) echo "Stopping ArmA 2 server..." if [ -f ${RUNFILE} ]; then # ask watcher process to exit by deleting its runfile... rm -f ${RUNFILE} fi # and terminate ArmA 2 server process 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) # this is a background watchdog process. Do not start directly while [ -f ${RUNFILE} ]; do # launch the server... cd ${ARMA_DIR} echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Starting server (port ${PORT})..." ${SERVER} >>${LOGFILE} 2>&1 -server -config=${CONFIG} -port=${PORT} -pid=${PIDFILE} ${OTHERPARAMS} 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