#!/bin/bash ### BEGIN INIT INFO # Provides: craftbukkit # Required-Start: mountkernfs $local_fs $network # Required-Stop: mountkernfs $local_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Craftbukkit Minecraft Server # Description: Craftbukkit Minecraft Server ### END INIT INFO # @TODO # - Implement restart # - Implement status # Config START USER="craftbukkit" SRVPATH="/opt/craftbukkit" WORLDPATH="/opt/craftbukkit/world/" JAVAOPTS="-d64 -server -Xms1G -Xmx4G -XX:+UseG1GC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -XX:TargetSurvivorRatio=90 -XX:MaxGCPauseMillis=200 -XX:MaxPermSize=256m -Dlog4j.configurationFile=bukkit-log.xml" JARNAME="craftbukkit.jar" JAROPTS="--universe ${WORLDPATH}" # Config END # We want LSB functions here . /lib/lsb/init-functions case "$1" in start) if [ -z "$(pgrep -f -n $JARNAME)" ]; then log_daemon_msg "Starting Minecraft Server" "Craftbukkit" sudo -u ${USER} tmux new-session -d -s craftbukkit-console "cd ${SRVPATH}; java ${JAVAOPTS} -jar ${JARNAME}" >/dev/null 2>&1 sleep 1 if [ $? -gt 0 ]; then # Tmux did not start log_failure_msg exit 1 elif [ -z "$(pgrep -f -n $JARNAME)" ]; then # Tmux stared, but Java did not log_failure_msg exit 1 else log_success_msg fi else log_warning_msg "Craftbukkit is already running!" exit 1 fi ;; stop) if [ -n "$(pgrep -f -n $JARNAME)" ]; then log_daemon_msg "Stopping Minecraft Server" "Craftbukkit" sudo -u ${USER} tmux send-keys -t craftbukkit-console "say NOTICE: Server shutting down in 5 seconds!" C-m >/dev/null 2>&1 sleep 5 sudo -u ${USER} tmux send-keys -t craftbukkit-console "stop" C-m >/dev/null 2>&1 sleep 10 if [ -n "$(pgrep -f -n $JARNAME)" ]; then log_failure_msg exit 1 else log_success_msg fi else log_warning_msg "Craftbukkit is not running!" exit 7 fi ;; *) echo "usage: $0 {start|stop|restart|status} user" esac exit 0