1
0
mirror of https://github.com/UzixLS/armastuff.git synced 2025-07-18 23:01:34 +03:00

adapted to work under supervisor (systemd/upstart/daemon/etc)

This commit is contained in:
UzixLS
2015-02-14 12:57:46 +03:00
parent 66abd9d389
commit fa72151698

118
run.sh
View File

@ -1,77 +1,61 @@
#!/usr/bin/env bash #!/bin/sh
# Run script for armagetron server.
PROGDIR=/opt/arma PROGDIR=/opt/arma
HOMDIR=/var/games/arma/$2 HOMDIR=/var/games/arma/$1
#test $(id -u) = 0 && su armagetron
case "$1" in if [ -z "$1" ]; then echo "Usage: $0 <servername>"; exit 1; fi
start|stop|restart|rehash|status) if [ ! -r "$HOMDIR" ]; then echo "$0: cannot read $HOMDIR"; exit 3; fi
if [ -z "$2" ]; then echo "Please, give me servername."; exit 1; fi
if [ ! -r "$HOMDIR" ]; then echo "Cannot read $HOMDIR"; exit 3; fi
;;
esac; case "$1" in
status)
echo "Status for armagetron ($2): "
echo -n ' Server: '
if [ ! -r "$HOMDIR/var/pid" ]; then echo "cannot read PID file ($HOMDIR/var/pid)"; exit 2; fi
echo -n $(cat "$HOMDIR/var/pid")" "
if [ -r /proc/$(cat "$HOMDIR/var/pid") ]; then echo "ok"; else echo "fail"; fi
echo -n ' Armatop: '
if [ ! -r "$HOMDIR/var/pid.armatop" ]; then echo "cannot read PID file ($HOMDIR/var/pid.armatop)"; exit 2; fi
echo -n $(cat "$HOMDIR/var/pid.armatop")" "
if [ -r /proc/$(cat "$HOMDIR/var/pid") ]; then echo "ok"; else echo "fail"; fi
;;
stop)
echo -n "Stopping armagetron ($2): "
if [ ! -r "$HOMDIR/var/pid" ]; then
echo "Cannot read PID file ($HOMDIR/var/pid)"
exit 2
fi
echo -n $(cat "$HOMDIR/var/pid")" "
kill $(cat "$HOMDIR/var/pid") 2>/dev/null
if [ ! -r "$HOMDIR/var/pid.armatop" ]; then
echo "Cannot read PID file ($HOMDIR/var/pid.armatop)"
exit 2
fi
echo -n $(cat "$HOMDIR/var/pid.armatop")" "
kill $(cat "$HOMDIR/var/pid.armatop") 2>/dev/null
echo .
;;
start)
echo -n "Starting armagetron ($2): "
touch "$HOMDIR/var/ladderlog.txt" "$HOMDIR/var/won_rounds.txt" "$HOMDIR/var/won_matches.txt" touch "$HOMDIR/var/ladderlog.txt" "$HOMDIR/var/won_rounds.txt" "$HOMDIR/var/won_matches.txt"
test -e "$HOMDIR/var/commands" && rm "$HOMDIR/var/commands" ; mkfifo "$HOMDIR/var/commands" test -e "$HOMDIR/var/commands" && rm "$HOMDIR/var/commands" ; mkfifo "$HOMDIR/var/commands"
nice -n 2 perl -T $PROGDIR/scripts/armatop.pl --workdir="$HOMDIR/var" &
echo -n "$! "; echo -n $! >"$HOMDIR/var/pid.armatop"
while true; do start() {
env LD_LIBRARY_PATH=/opt/arma/lib/ $PROGDIR/bin/armagetronad-dedicated\ if pgrep -f -- "--userdatadir $HOMDIR" >/dev/null ; then
--userdatadir "$HOMDIR" --input "$HOMDIR/var/commands" >"$HOMDIR/var/log" 2>&1 & echo "$0: $HOMDIR already in use"
trap "kill %1; exit;" TERM INT
trap "kill -HUP %1; wait %1;" HUP
wait %1
sleep 3
done &
echo -n "$! "; echo -n $! >"$HOMDIR/var/pid"
echo .
;;
restart)
"$0" stop "$2" && "$0" start "$2"
;;
rehash)
echo -n "Rehashing armagetron ($2): "
if [ ! -r "$HOMDIR/var/pid" ]; then
echo "Cannot read PID file ($HOMDIR/var/pid)"
exit 2 exit 2
fi fi
echo -n $(cat "$HOMDIR/var/pid")" "
kill -HUP $(cat "$HOMDIR/var/pid") 2>/dev/null nice -n 2 perl -T $PROGDIR/scripts/armatop.pl --workdir="$HOMDIR/var" &
echo . echo -n $! >"$HOMDIR/var/pid.armatop"
;;
*) $PROGDIR/bin/armagetronad-dedicated --userdatadir "$HOMDIR" --input "$HOMDIR/var/commands" >"$HOMDIR/var/log" 2>&1 &
echo "Unknown parameters. Try to use \"$0 <start|stop|restart|rehash|status> <servername>\"" echo -n $! >"$HOMDIR/var/pid.core"
;; }
esac
reload() {
test -r $HOMDIR/var/pid.core && kill -HUP `cat $HOMDIR/var/pid.core`
}
stoppid() {
p=$1
if [ -r $p ]; then
for i in `seq 10`; do
if ps `cat $p` >/dev/null; then
kill `cat $p`
else
break
fi
sleep 1
done
if ps `cat $p` >/dev/null; then
kill -9 `cat $p`
fi
rm $p
fi
}
stop() {
stoppid $HOMDIR/var/pid.armatop
stoppid $HOMDIR/var/pid.core
exit $1
}
trap ":;stop" TERM INT EXIT
trap ":;reload" HUP
echo -n $$ >"$HOMDIR/var/pid"
start
while jobs %2 >/dev/null 2>&1; do sleep 1; done
stop 1