Report abuse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/bin/bash
#
# armaserver: ArmA 2 Linux Dedicated Server Control Script
#  (c) 2009 BIStudio
#  ArmA 2 binary version must be 1.04 or later
#

#=======================================================================
#========               CONFIGURATION PARAMETERS                ========
#======== MUST BE EDITED MANUALLY TO FIT YOUR SYSTEM PARAMETERS ========
#=======================================================================
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..."
	# file to mark we want server running...	
	echo "go" >${RUNFILE}
	# launch the background watchdog process to run the server
	nohup </dev/null >/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 -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