mirror of
https://github.com/UzixLS/armastuff.git
synced 2025-07-18 14:51:23 +03:00
adapted to work under supervisor (systemd/upstart/daemon/etc)
This commit is contained in:
126
run.sh
126
run.sh
@ -1,77 +1,61 @@
|
||||
#!/usr/bin/env bash
|
||||
# Run script for armagetron server.
|
||||
#!/bin/sh
|
||||
|
||||
PROGDIR=/opt/arma
|
||||
HOMDIR=/var/games/arma/$2
|
||||
#test $(id -u) = 0 && su armagetron
|
||||
HOMDIR=/var/games/arma/$1
|
||||
|
||||
case "$1" in
|
||||
start|stop|restart|rehash|status)
|
||||
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
|
||||
if [ -z "$1" ]; then echo "Usage: $0 <servername>"; exit 1; fi
|
||||
if [ ! -r "$HOMDIR" ]; then echo "$0: cannot read $HOMDIR"; exit 3; 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"
|
||||
test -e "$HOMDIR/var/commands" && rm "$HOMDIR/var/commands" ; mkfifo "$HOMDIR/var/commands"
|
||||
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"
|
||||
|
||||
nice -n 2 perl -T $PROGDIR/scripts/armatop.pl --workdir="$HOMDIR/var" &
|
||||
echo -n "$! "; echo -n $! >"$HOMDIR/var/pid.armatop"
|
||||
|
||||
while true; do
|
||||
env LD_LIBRARY_PATH=/opt/arma/lib/ $PROGDIR/bin/armagetronad-dedicated\
|
||||
--userdatadir "$HOMDIR" --input "$HOMDIR/var/commands" >"$HOMDIR/var/log" 2>&1 &
|
||||
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
|
||||
fi
|
||||
echo -n $(cat "$HOMDIR/var/pid")" "
|
||||
kill -HUP $(cat "$HOMDIR/var/pid") 2>/dev/null
|
||||
echo .
|
||||
;;
|
||||
*)
|
||||
echo "Unknown parameters. Try to use \"$0 <start|stop|restart|rehash|status> <servername>\""
|
||||
;;
|
||||
esac
|
||||
start() {
|
||||
if pgrep -f -- "--userdatadir $HOMDIR" >/dev/null ; then
|
||||
echo "$0: $HOMDIR already in use"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
nice -n 2 perl -T $PROGDIR/scripts/armatop.pl --workdir="$HOMDIR/var" &
|
||||
echo -n $! >"$HOMDIR/var/pid.armatop"
|
||||
|
||||
$PROGDIR/bin/armagetronad-dedicated --userdatadir "$HOMDIR" --input "$HOMDIR/var/commands" >"$HOMDIR/var/log" 2>&1 &
|
||||
echo -n $! >"$HOMDIR/var/pid.core"
|
||||
}
|
||||
|
||||
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
|
||||
|
Reference in New Issue
Block a user