Created
December 6, 2013 22:11
-
-
Save deckerego/7833021 to your computer and use it in GitHub Desktop.
Linux startup script for a Minecraft dedicated server
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# ------------------------------------------------------ | |
# Minecraft Startup Script for Unix | |
# ------------------------------------------------------ | |
# minecraft This shell script takes care of the Minecraft server instance | |
# | |
# chkconfig: 2345 80 30 | |
# description: minecraft is liquid awesome | |
# processname: java | |
DEFAULTS='/etc/default/minecraft' | |
PIDFILE='/var/run/minecraft/pid' | |
JARFILE='minecraft_server.jar' | |
ACTION="$1" | |
usage() { | |
echo "Usage: $0 {start|stop|restart|status}" | |
exit 1 | |
} | |
[ $# -gt 0 ] || usage | |
if [[ ! -f "$DEFAULTS" ]]; then | |
echo "Missing defaults file $DEFAULTS" | |
exit -1 | |
fi | |
. "$DEFAULTS" | |
# JVM Memory Settings | |
[[ -n $JVM_MAX_MEMORY ]] && JAVA_OPTS="$JAVA_OPTS -Xmx$JVM_MAX_MEMORY -XX:+UseConcMarkSweepGC -XX:+UseAdaptiveGCBoundary -XX:+CMSClassUnloadingEnabled" | |
RUN_CMD="java $JAVA_OPTS -cp .:* -jar $JARFILE nogui $JAVA_ARGS" | |
export JAVA_HOME | |
export MINECRAFT_HOME | |
export PATH | |
case "$ACTION" in | |
start) | |
echo "Starting $APP_NAME: " | |
cd $MINECRAFT_HOME | |
su $RUN_AS_USER -c "$RUN_CMD" >> /dev/null 2>&1 & | |
sleep 2 | |
MINECRAFT_PID=`ps -u minecraft -o pid,command | grep "$APP_NAME" | awk '{print $1}'` | |
[[ -n $MINECRAFT_PID ]] && echo $MINECRAFT_PID > "$PIDFILE" | |
;; | |
stop) | |
if [[ -a "$PIDFILE" ]]; then | |
MINECRAFT_PID=`cat $PIDFILE` | |
elif [[ -n "$APP_NAME" ]]; then | |
MINECRAFT_PID=`ps -u minecraft -o pid,command | grep "$APP_NAME" | awk '{print $1}'` | |
else | |
echo "Cannot find PID! Need either a PID file or an APP_NAME." | |
exit -1 | |
fi | |
ATTEMPTS=0 | |
echo -n "Shutting down $APP_NAME: $MINECRAFT_PID" | |
kill $MINECRAFT_PID | |
while [[ -n `ps -p $MINECRAFT_PID -o comm=` ]]; do | |
echo -n "." | |
sleep 1 | |
if [[ ++ATTEMPTS -gt 10 ]]; then | |
echo -n "sending SIGKILL to $MINECRAFT_PID" | |
kill -9 $MINECRAFT_PID | |
break | |
fi | |
done | |
echo | |
;; | |
restart) | |
$0 stop $* | |
sleep 15 | |
$0 start $* | |
;; | |
status) | |
ROCKET_PS=`ps -ef | grep $APP_NAME` | |
if [ -n "$ROCKET_PS" ] | |
then | |
echo "$APP_NAME running" | |
exit 0 | |
else | |
echo "$APP_NAME is currently not running." | |
fi | |
exit 1 | |
;; | |
*) | |
usage | |
;; | |
esac | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment