Advertisement
SoulofSorrow

Minecraft startscript

Dec 12th, 2015
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.01 KB | None | 0 0
  1. #Settings
  2. SERVICE='Infinity.jar'
  3. SCREEN='infinity'
  4. USERNAME='root'
  5. WORLD='world'
  6. MCPATH='/root/FTB/Infinity'
  7. MAXHEAP=6144
  8. MINHEAP=2144
  9. HISTORY=2048
  10. CPU_COUNT=4
  11. INVOCATION="java -Xmx${MAXHEAP}M -Xms${MINHEAP}M -XX:+UseConcMarkSweepGC \
  12. -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:PermSize=256M \
  13. -jar $SERVICE $OPTIONS"
  14.  
  15. ME=`whoami`
  16. as_user() {
  17.   if [ $ME == $USERNAME ] ; then
  18.     bash -c "$1"
  19.   else
  20.     su - $USERNAME -c "$1"
  21.   fi
  22. }
  23.  
  24. mc_start() {
  25.   if  pgrep -u $USERNAME -f $SERVICE > /dev/null
  26.   then
  27.     echo "$SERVICE is already running!"
  28.   else
  29.     echo "Starting $SERVICE..."
  30.     cd $MCPATH
  31.     as_user "cd $MCPATH && screen -h $HISTORY -dmS $SCREEN $INVOCATION"
  32.     sleep 7
  33.     if pgrep -u $USERNAME -f $SERVICE > /dev/null
  34.     then
  35.       echo "$SERVICE is now running."
  36.     else
  37.       echo "Error! Could not start $SERVICE!"
  38.     fi
  39.   fi
  40. }
  41.  
  42. mc_stop() {
  43.   if pgrep -u $USERNAME -f $SERVICE > /dev/null
  44.   then
  45.     echo "Stopping $SERVICE"
  46.     as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say SERVER SHUTTING DOWN IN 30 SECONDS.\"\015'"
  47.     sleep 10
  48.     as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say SERVER SHUTTING DOWN IN 20 SECONDS.\"\015'"
  49.     sleep 10
  50.     as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'"
  51.     sleep 1
  52.     as_user "screen -p 0 -S $SCREEN -X eval 'stuff "save-all"\015'"
  53.     sleep 10
  54.     as_user "screen -p 0 -S $SCREEN -X eval 'stuff "stop"\015'"
  55.     sleep 7
  56.   else
  57.     echo "$SERVICE was not running."
  58.   fi
  59.   if pgrep -u $USERNAME -f $SERVICE > /dev/null
  60.   then
  61.     echo "Error! $SERVICE could not be stopped."
  62.   else
  63.     echo "$SERVICE is stopped."
  64.   fi
  65. }
  66.  
  67. mc_command() {
  68.   command="$1";
  69.   if pgrep -u $USERNAME -f $SERVICE > /dev/null
  70.   then
  71.     pre_log_len=`wc -l "$MCPATH/logs/latest.log" | awk '{print $1}'`
  72.     echo "$SERVICE is running... executing command"
  73.     as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"$command\"\015'"
  74.     sleep .1 # assumes that the command will run and print to the log file in less than .1 seconds
  75.     # print output
  76.     tail -n $[`wc -l "$MCPATH/logs/latest.log" | awk '{print $1}'`-$pre_log_len] "$MCPATH/logs/latest.log"
  77.   fi
  78. }
  79.  
  80.  
  81. #Start-Stop here
  82. case "$1" in
  83.   start)
  84.     mc_start
  85.     ;;
  86.   stop)
  87.     mc_stop
  88.     ;;
  89.   restart)
  90.     mc_stop
  91.     mc_start
  92.     ;;
  93.  status)
  94.     if pgrep -u $USERNAME -f $SERVICE > /dev/null
  95.     then
  96.       echo "$SERVICE is running."
  97.     else
  98.       echo "$SERVICE is not running."
  99.     fi
  100.     ;;
  101.  check)
  102.     if pgrep -u $USERNAME -f $SERVICE > /dev/null
  103.     then
  104.       echo "$SERVICE is running. All is fine"
  105.     else
  106.       echo "$SERVICE is not running. Will be started now."
  107.       mc_start
  108.     fi
  109.     ;;
  110.   command)
  111.     if [ $# -gt 1 ]; then
  112.       shift
  113.       mc_command "$*"
  114.     else
  115.       echo "Must specify server command (try 'help'?)"
  116.     fi
  117.     ;;
  118.  
  119.   *)
  120.   echo "Usage: $0 {start|stop|restart|Status|check|command \"server command\"}"
  121.   exit 1
  122.   ;;
  123. esac
  124.  
  125. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement