99 lines
2.3 KiB
Bash
99 lines
2.3 KiB
Bash
#!/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
|