ThisIsAreku

Minecraft ramdisk

Nov 12th, 2011
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 6.22 KB | None | 0 0
  1. #!/bin/bash
  2. # /etc/init.d/minecraft
  3. # version 0.3.2 2011-01-27 (YYYY-MM-DD)
  4.  
  5. ### BEGIN INIT INFO
  6. # Provides:   minecraft
  7. # Required-Start: $local_fs $remote_fs
  8. # Required-Stop:  $local_fs $remote_fs
  9. # Should-Start:   $network
  10. # Should-Stop:    $network
  11. # Default-Start:  2 3 4 5
  12. # Default-Stop:   0 1 6
  13. # Short-Description:    Minecraft server
  14. # Description:    Starts the minecraft server
  15. ### END INIT INFO
  16.  
  17. #Settings
  18. SERVICE='minecraft_server.jar'
  19. USERNAME="minecraft"
  20. MCSTORE='/home/minecraft/minecraft'
  21. MCPATH='/home/minecraft/ramdisk'
  22. CPU_COUNT=1
  23. INVOCATION='/etc/jdk1.7.0/bin/java -Xmx1024M -Xms1024M -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=1 -XX:+AggressiveOpts -jar /home/minecraft/ramdisk/minecraft_server.jar nogui'
  24. BACKUPPATH='/home/minecraft/backups/'
  25.  
  26.  
  27. ME=`whoami`
  28. as_user() {
  29.   if [ "$ME" == "$USERNAME" ] ; then
  30.     bash -c "$1"
  31.   else
  32.     su - $USERNAME -c "$1"
  33.   fi
  34. }
  35.  
  36. mc_start() {
  37.   if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  38.   then
  39.     echo "Tried to start but $SERVICE was already running!"
  40.   else
  41.     echo "$SERVICE was not running... starting."
  42.     cd $MCPATH
  43.     if [ ! -f "$MCPATH/minecraft_server.jar" ]
  44.     then
  45.       echo "Ram drive empty...  prepping."
  46.       as_user "cp -R $MCSTORE/* $MCPATH/"
  47.     fi
  48.     as_user "cd $MCPATH && screen -dmS minecraft $INVOCATION"
  49.     sleep 7
  50.     if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  51.     then
  52.       echo "$SERVICE is now running."
  53.     else
  54.       echo "Could not start $SERVICE."
  55.     fi
  56.   fi
  57. }
  58.  
  59. mc_saveoff() {
  60.         if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  61.     then
  62.         echo "$SERVICE is running... suspending saves"
  63.         as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'"
  64.                 as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-off\"\015'"
  65.                 as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
  66.                 sync
  67.         sleep 10
  68.     else
  69.                 echo "$SERVICE was not running. Not suspending saves."
  70.     fi
  71. }
  72.  
  73. mc_saveon() {
  74.         if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  75.     then
  76.         echo "$SERVICE is running... re-enabling saves"
  77.                 as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-on\"\015'"
  78.                 as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'"
  79.     else
  80.                 echo "$SERVICE was not running. Not resuming saves."
  81.     fi
  82. }
  83.  
  84. mc_stop() {
  85.         if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  86.         then
  87.                 echo "$SERVICE is running... stopping."
  88.                 as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER SHUTTING DOWN IN 5 SECONDS. Saving map...\"\015'"
  89.                 as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
  90.                 sleep 5
  91.                 as_user "screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015'"
  92.                 sleep 5
  93.         else
  94.                 echo "$SERVICE was not running."
  95.         fi
  96.         if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  97.         then
  98.                 echo "$SERVICE could not be shut down... still running."
  99.         else
  100.                 echo "$SERVICE is shut down."
  101.         fi
  102. }
  103.  
  104.  
  105. mc_update() {
  106.   if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  107.   then
  108.     echo "$SERVICE is running! Will not start update."
  109.   else
  110.     MC_SERVER_URL=http://minecraft.net/`wget -q -O - http://www.minecraft.net/download.jsp | grep minecraft_server.jar\</a\> | cut -d \" -f 2`
  111.     as_user "cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL"
  112.     if [ -f $MCPATH/minecraft_server.jar.update ]
  113.     then
  114.       if `diff $MCPATH/minecraft_server.jar $MCPATH/minecraft_server.jar.update >/dev/null`
  115.         then
  116.           echo "You are already running the latest version of $SERVICE."
  117.         else
  118.           as_user "mv $MCPATH/minecraft_server.jar.update $MCPATH/minecraft_server.jar"
  119.           echo "Minecraft successfully updated."
  120.       fi
  121.     else
  122.       echo "Minecraft update could not be downloaded."
  123.     fi
  124.   fi
  125. }
  126.  
  127. mc_backup() {
  128.    echo "Backing up minecraft files"
  129.    if [ -f $BACKUPPATH/MCBKUP_`date "+%Y.%m.%d"`.tar.gz ]
  130.    then
  131.      for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  132.      do
  133.        if [ -f $BACKUPPATH/MCBKUP_`date "+%Y.%m.%d"`-$i.tar.gz ]
  134.        then
  135.          continue
  136.        else
  137.          as_user "cd $MCSTORE && tar zcf $BACKUPPATH/MCBKUP_`date "+%Y.%m.%d"`-$i.tar.gz ."
  138.          break
  139.        fi
  140.      done
  141.    else
  142.      as_user "cd $MCSTORE && tar zcf $BACKUPPATH/MCBKUP_`date "+%Y.%m.%d"`.tar.gz ."
  143.    fi
  144.    echo "Backup complete"
  145. }
  146.  
  147. mc_save2disk() {
  148.    echo "Saving ramdrive to disk."
  149.    if [ ! -f $MCPATH/minecraft_server.jar ]
  150.    then
  151.      echo "Error.. Minecraft not in ram"
  152.    else
  153.      if [ -d $MCSTORE/world2 ]
  154.      then
  155.        as_user "rm -r $MCSTORE/world2"
  156.      fi
  157.      if [ -d $MCSTORE/world ]
  158.      then
  159.      as_user "mv $MCSTORE/world $MCSTORE/world2"
  160.      fi
  161.  
  162.      as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-off\"\015'"
  163.      as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
  164.      as_user "cp -R $MCPATH/* $MCSTORE/"
  165.      as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-on\"\015'"
  166.  
  167.      if [ -d $MCSTORE/world2 ]
  168.      then
  169.        as_user "rm -r $MCSTORE/world2"
  170.      fi
  171.    fi
  172.  
  173.  
  174. }
  175.  
  176.  
  177. #Start-Stop here
  178. case "$1" in
  179.   start)
  180.     mc_start
  181.     ;;
  182.   stop)
  183.     mc_stop
  184.     mc_save2disk
  185.     ;;
  186.   restart)
  187.     mc_stop
  188.     mc_save2disk
  189.     mc_start
  190.     ;;
  191.   update)
  192.     mc_stop
  193.     mc_backup
  194.     mc_update
  195.     mc_start
  196.     ;;
  197.   backup)
  198.     mc_saveoff
  199.     mc_save2disk
  200.     mc_backup
  201.     mc_saveon
  202.     ;;
  203.   save2disk)
  204.     mc_save2disk
  205.     ;;
  206.   status)
  207.     if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  208.     then
  209.       echo "$SERVICE is running."
  210.     else
  211.       echo "$SERVICE is not running."
  212.     fi
  213.     ;;
  214.  
  215.   *)
  216.   echo "Usage: /etc/init.d/minecraft {start|stop|update|backup|status|restart|save2disk}"
  217.   exit 1
  218.   ;;
  219. esac
  220.  
  221. exit 0
  222.  
  223.  
Advertisement
Add Comment
Please, Sign In to add comment