skaviouz icon

gameserver

skaviouz | PRO | 04/30/15 06:13:23 AM UTC | 0 ⭐ | 651 👁️ | Never ⏰ | []
text |

3.71 KB

|

None

|

0 👍

/

0 👎

#!/bin/bash
# /etc/init.d/gameserver
# version 0.1b 9MAR2015
 ### BEGIN INIT INFO
# Provides:   gameserver
# Required-Start: $local_fs $remote_fs
# Required-Stop:  $local_fs $remote_fs
# Should-Start:   $network
# Should-Stop:    $network
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description:    CustomGameServer
# Description:    Starts the custom game server
### END INIT INFO
 #Settings
JARFILE='cauldron-1.7.10-1.1307.06.218-server.jar'
USERNAME="minecraft"
GAMESTORE="/var/www/html/game"
GAMEPATH="/dev/shm/game"
BACKUPPATH="/var/www/html/game_backup"
 CPU_COUNT=1
INVOCATION="java -Xmx3072M -Xms3072M -server -jar $JARFILE -o false"
WORLD=rr3world
 #DONT EDIT BELOW THIS LINE
 #SPECIAL CHARACTER CODES
ENTER="`echo -ne '\015'`"
 to_screen() {
  #TO_SCREEN="screen -p 0 -S gameserver -X eval 'stuff "
  screen -S gameserver -p 0 -X stuff "$1"
}
 to_screenNL() {
  #TO_SCREEN="screen -p 0 -S gameserver -X eval 'stuff "
  screen -S gameserver -p 0 -X stuff "$1$ENTER"
}
 game_status() {
  ps aux |grep -F -v grep|grep -F -v SCREEN|grep -F --quiet $JARFILE
  return $?
}
 game_start() {
  if [ -d $GAMESTORE/$WORLD.bak ]; then
    echo "last $WORLD.bak still exist, crashed warning! manual check required!!!"
    exit 1
  fi
  cd $MCPATH
  if [ ! -f "$GAMEPATH/$JARFILE" ]; then
    mkdir /dev/shm/game
    cp -R $GAMESTORE/* $GAMEPATH/
    chmod -R 777 $GAMEPATH
  fi
  to_screenNL "exit"
  screen -dmS gameserver
  to_screenNL "cd $GAMEPATH"
  to_screenNL "$INVOCATION"
  sleep 7
  if game_status; then
    echo "$JARFILE : running."
  else
    echo "Could not start : $JARFILE?"
 	sleep 13
    if game_status; then
      echo "$JARFILE : running finally."
    else
      echo "Could not start : $JARFILE after waiting 20 seconds"
    fi
  fi
 }
 game_stop() {
  echo "...prepare to be stopped"
  to_screenNL "say SERVER SHUTTING DOWN IN 5 SECONDS. SAVING"
  to_screenNL "save-all"
  echo "... 35 seconds left - save complete"
  sleep 5
  to_screenNL "stop"
  echo "... 20 seconds left - sent stop command"
  sleep 10
  to_screenNL "exit"
  echo "... 10 seconds left - sent exit command for terminal"
  sleep 10
}
  #Start-Stop here
case "$1" in
  status)
    if game_status; then
      echo "$JARFILE is running."
    else
      echo "$JARFILE is not running."
    fi
    ;;
  start)
    if game_status; then
      echo "$JARFILE was already running"
    else
      game_start
    fi
    ;;
  stop)
    if game_status; then
      echo "$JARFILE is running..."
      game_stop
      if game_status; then
        echo "$JARFILE could not be shut down... check in 20 seconds?"
		sleep 20
        if game_status; then
          echo "$JARFILE could not be shut down... restart system?"
        else
          echo "$JARFILE finally shut down... lots of lag? upgrade your system."
		fi
      else
        echo "$JARFILE is shut down."
      fi
    else
      echo "$JARFILE was already not running."
    fi
    ;;
  exek)
    echo "exec - $2"
    $2
    ;;
  help)
    echo "    start - start server"
    echo "    stop - stop server"
    echo "    status - if server running or not"
    echo "    check - if ramdisk game directory empty or not"
    echo "    build - copy game-folder from STORE to SHM"
    echo "    stabalize - delete STORE_1"
    echo "                rename STORE to STORE_1"
    echo "                MOVE game-folder from SHM to STORE"
    echo "    fsave - force save"
    echo "    command - send command to server"
    echo "    exec - use only for advanced debugging"
    ;;
  *)
    echo "Usage: /etc/init.d/gameserver {help|start|stop|status|check|build|stabalize|fsave|command|exec}"
    exit 1
  ;;
esac

Comments