Skip to content

Instantly share code, notes, and snippets.

@PhanaticD
Created January 17, 2016 09:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save PhanaticD/98ae834ed2f20bce7985 to your computer and use it in GitHub Desktop.
Save PhanaticD/98ae834ed2f20bce7985 to your computer and use it in GitHub Desktop.
#!/bin/bash
SERVERNAME="placeholder"
SERVICE="placeholder.jar"
MCPATH="/home/user/placeholder"
BACKUPPATH="/hd2/backups/placeholder"
INVOCATION="java -Xms2G -Xmx8G -jar $SERVICE"
mc_start() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
PID="`ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE | awk '{print $1}'`"
echo " * $SERVERNAME was already running! (pid $PID)"
exit 1;
else
echo " * $SERVERNAME was not already running. Starting.."
cd $MCPATH && screen -dmS $SERVERNAME $INVOCATION
sleep 1
echo " * Checking if $SERVERNAME has started"
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
PID="`ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE | awk '{print $1}'`"
echo " * $SERVERNAME is now running. (pid $PID)"
else
echo " * Could not start $SERVERNAME."
exit 1;
fi
fi
}
mc_stop() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
PID="`ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE | awk '{print $1}'`"
echo " * $SERVERNAME is running (pid $PID), shutting down"
echo " * Notifying users of shutdown..."
screen -p 0 -S $SERVERNAME -X eval 'stuff "say SERVER RESTARTING\015"'
sleep 4
echo " * Stopping $SERVERNAME..."
screen -p 0 -S $SERVERNAME -X eval 'stuff "stop\015"'
else
echo " * $SERVERNAME was not running!"
exit 1;
fi
sleep 10
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo " * $SERVERNAME could not be shutdown!"
exit 1;
else
echo " * $SERVERNAME is shut down."
fi
}
mc_status() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
PID="`ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE | awk '{print $1}'`"
echo " * $SERVERNAME (pid $PID) is running"
else
echo " * $SERVERNAME is not running."
exit 1;
fi
}
mc_info() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
PID="`ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE | awk '{print $1}'`"
RSS="`ps -p $PID --format rss | tail -n 1`"
echo " - $SERVERNAME size : `cd $MCPATH && du -hs`"
echo " - Process ID : "$PID""
echo " - Memory Usage : `expr $RSS / 1024` Mb ($RSS kb)"
echo " - Active Connections : "
netstat -tna | grep -E "Proto|25565"
else
echo " * $SERVERNAME is not running."
fi
}
mc_command() {
screen -p 0 -S $SERVERNAME -X eval "stuff '$1'\015"
}
mc_backup() {
echo " * Backing up $SERVERNAME"
screen -p 0 -S $SERVERNAME -X eval 'stuff "save-all\015"'
NOW="`date "+%Y-%m-%d"`"
zip -r $BACKUPPATH/$SERVERNAME_$NOW.zip $MCPATH
}
mc_removeoldbackups() {
NUMBEROFBACKUPS="`find \"$BACKUPPATH\" -name \"$SERVERNAME*\" -type f -mtime +5 | wc -l`"
if [ $NUMBEROFBACKUPS -ge 1 ]
then
echo " * Removing map backups older than 5 days"
cd $BACKUPPATH && find . -name "$SERVERNAME*" -type f -mtime +5 | xargs rm -fv
echo " * Removed old map backups"
else
echo " * No map backups older than 5 days to remove"
fi
}
mc_kill() {
PID="`ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE | awk '{print $1}'`"
kill -9 $PID
echo " * killing $PID"
}
case "$1" in
start)
mc_start
;;
stop)
mc_stop
;;
kill)
mc_kill
;;
res)
screen -r $SERVERNAME
;;
restart)
mc_stop
sleep 10
mc_start
;;
status)
mc_status
;;
info)
mc_info
;;
command)
mc_command "$2"
;;
backup)
mc_backup
;;
removeoldbackups)
mc_removeoldbackups
;;
*)
echo " * Usage: $0 {start|stop|kill|restart|status|info|command|res|backup|removeoldbackups}"
exit 1;
;;
esac
exit 0;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment