#!/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 # We want LSB functions here . /lib/lsb/init-functions # Load configuration variables . /etc/default/craftbukkit server_running() { if [ -z "$(pgrep -f -n $JARNAME)" ]; then return 1 else return 0 fi } server_start() { if ! server_running; then log_daemon_msg "Starting Minecraft Server" "Craftbukkit" sudo -u ${USER} tmux new-session -d -s craftbukkit-console "cd ${SRVPATH}; java ${JAVAOPTS} -jar ${JARNAME} ${JAROPTS}" >/dev/null 2>&1 if [ $? -gt 0 ]; then # Tmux did not start log_failure_msg exit 1 elif sleep 1 && ! server_running; then # Tmux started, but Java did not logger -t craftbukkit -p local0.crit "Craftbukkit start failed" log_failure_msg exit 1 else logger -t craftbukkit -p local0.info "Craftbukkit minecraft server started" log_success_msg fi else log_warning_msg "Craftbukkit is already running!" exit 1 fi } server_stop() { if server_running; 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 "save-all" C-m >/dev/null 2>&1 sleep 1 sudo -u ${USER} tmux send-keys -t craftbukkit-console "stop" C-m >/dev/null 2>&1 sleep 10 if server_running; then logger -t craftbukkit -p local0.crit "Craftbukkit shutdown failed" log_failure_msg exit 1 else logger -t craftbukkit -p local0.info "Craftbukkit minecraft server stopped" log_success_msg fi else log_warning_msg "Craftbukkit is not running!" exit 7 fi } case "$1" in start) server_start ;; stop) server_stop ;; restart) server_stop server_start ;; status) if server_running; then log_success_msg "Craftbukkit is running" else log_failure_msg "Craftbukkit is not running!" exit 1 fi ;; *) log_action_msg "Usage: $0 {start|stop|restart|status}" exit 1 esac exit 0