Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.66 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. #Saves
  18. #
  19. # INVOCATION='java -Xms1024M -Xmx3072M -jar minecraft_server.jar'
  20.  
  21. #Settings
  22. SERVICE='bukkit_server.jar'
  23. USERNAME="server"
  24. MCPATH='/srv/minecraft'
  25. INVOCATION='java -d64 -Xincgc -server -Xmx2048M -jar bukkit_server.jar nogui'
  26. BACKUPPATH='/srv/minecraft/backup'
  27. TIME="`date "+%Y.%m.%d-%H_%M"`"
  28. OLD="`date -d "1 day ago" +%Y.%m.%d`"
  29. RAMDISK="/dev/shm/minecraft"
  30. SCREENNAME="mc-bukkit_server"
  31.  
  32. RAMDISKWORLDS="world nether"
  33. BACKUPWORLDS="world nether"
  34.  
  35. ME=`whoami`
  36. as_user() {
  37.   if [ "$ME" == "$USERNAME" ] ; then
  38.     bash -c "$1"
  39.   else
  40.     su - $USERNAME -c "$1"
  41.   fi
  42. }
  43.  
  44. mc_start() {
  45.   if [ ! -d $RAMDISK ]
  46.   then
  47.     as_user "mkdir -p $RAMDISK"
  48.   fi
  49.  
  50.   for i in $RAMDISKWORLDS
  51.    do
  52.      if [ -d $RAMDISK/$i ]
  53.      then
  54.        continue
  55.      else
  56.        if [ "`ls -la $MCPATH | grep $i | awk '{print $11}'`" != "$RAMDISK/$i" ]
  57.        then
  58.          as_user "cd $MCPATH && rm $i"
  59.          as_user "cd $MCPATH && ln -s $RAMDISK/$i $i"
  60.        fi
  61.        as_user "cd $RAMDISK && mkdir $i"
  62.        as_user "cd $MCPATH && cp -r storage/$i/* $RAMDISK/$i"
  63.      fi
  64.    done
  65.  
  66.   if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  67.   then
  68.     echo "Tried to start but $SERVICE was already running!"
  69.   else
  70.     echo "$SERVICE was not running... starting."
  71.     cd $MCPATH
  72.     as_user "cd $MCPATH && screen -dmS $SCREENNAME $INVOCATION"
  73.     sleep 7
  74.     if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  75.     then
  76.       echo "$SERVICE is now running."
  77.     else
  78.       echo "Could not start $SERVICE."
  79.     fi
  80.   fi
  81. }
  82.  
  83. mc_saveoff() {
  84.         if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  85.     then
  86.         echo "$SERVICE is running... suspending saves"
  87.         as_user "screen -p 0 -S $SCREENNAME -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'"
  88.                 sleep 3
  89.                 as_user "screen -p 0 -S $SCREENNAME -X eval 'stuff \"save-off\"\015'"
  90.                 sleep 2
  91.                 as_user "screen -p 0 -S $SCREENNAME -X eval 'stuff \"save-all\"\015'"
  92.                 sync
  93.         sleep 10
  94.     else
  95.                 echo "$SERVICE was not running. Not suspending saves."
  96.     fi
  97. }
  98.  
  99. mc_saveon() {
  100.         if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  101.     then
  102.         echo "$SERVICE is running... re-enabling saves"
  103.                 as_user "screen -p 0 -S $SCREENNAME -X eval 'stuff \"save-on\"\015'"
  104.                 sleep 1
  105.                 as_user "screen -p 0 -S $SCREENNAME -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'"
  106.     else
  107.                 echo "$SERVICE was not running. Not resuming saves."
  108.     fi
  109. }
  110.  
  111. mc_stop() {
  112.         if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  113.         then
  114.                 echo "$SERVICE is running... stopping."
  115.                 as_user "screen -p 0 -S $SCREENNAME -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'"
  116.                 as_user "screen -p 0 -S $SCREENNAME -X eval 'stuff \"save-all\"\015'"
  117.                 sleep 10
  118.                 as_user "screen -p 0 -S $SCREENNAME -X eval 'stuff \"stop\"\015'"
  119.                 sleep 7
  120.         else
  121.                 echo "$SERVICE was not running."
  122.         fi
  123.         if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  124.         then
  125.                 echo "$SERVICE could not be shut down... still running."
  126.         else
  127.                 echo "$SERVICE is shut down."
  128.                 if [ ! -d $MCPATH/storage ] ; then as_user "cd $MCPATH && mkdir storage" ; fi
  129.                 echo "Dumping Minecraft Ramdisk..."
  130.  
  131.                   for i in $RAMDISKWORLDS
  132.                    do
  133.                      as_user "cd $MCPATH && rm -r storage/$i"
  134.                      as_user "cd $MCPATH && mkdir storage/$i"
  135.                      as_user "cd $RAMDISK && cp -r $i/* $MCPATH/storage/$i"
  136.                    done
  137.  
  138.                 echo "Dump complete"
  139.         fi
  140. }
  141.  
  142. mc_backup() {
  143.    if [ ! -d $BACKUPPATH ] ; then as_user "mkdir -p $BACKUPPATH" ; fi
  144.  
  145.    for i in $BACKUPWORLDS
  146.     do
  147.       if [ ! -d $BACKUPPATH/$i ]
  148.       then
  149.         as_user "cd $BACKUPPATH && mkdir $i"
  150.       fi
  151.       echo "Backing up minecraft world - $i"
  152.       as_user "cd $MCPATH/$i && tar cfz $BACKUPPATH/$i/$TIME.tar.gz *"
  153.     done
  154.  
  155.    echo "Backup complete"
  156. }
  157.  
  158. mc_delete() {
  159.    echo "Deleting old backups"
  160.  
  161.    for i in $BACKUPWORLDS
  162.     do
  163.       as_user "cd $BACKUPPATH/$i && rm -r $OLD*"
  164.     done
  165.  
  166.    echo "Backups deleted"
  167. }
  168.  
  169. mc_logins() {
  170.    echo "Creating log for connections"
  171.    as_user "cd $MCPATH && cat server.log | grep -E \"logged|Disconnecting|disconnect\" > logins.log"
  172.    echo "Log created"
  173. }
  174.  
  175.  
  176.  
  177. case "$1" in
  178.   start)
  179.     mc_start
  180.     ;;
  181.   stop)
  182.     mc_stop
  183.     ;;
  184.   restart)
  185.     mc_stop
  186.     mc_start
  187.     ;;
  188.   logins)
  189.     mc_logins
  190.     ;;
  191.   backup)
  192.     mc_saveoff
  193.     mc_backup
  194.     mc_saveon
  195.     ;;
  196.   delete)
  197.     mc_delete
  198.     ;;
  199.   status)
  200.     if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  201.     then
  202.       echo "$SERVICE is running."
  203.     else
  204.       echo "$SERVICE is not running."
  205.     fi
  206.     ;;
  207.  
  208.   *)
  209.   echo "Usage: /etc/init.d/minecraft {start|stop|update|backup|status|restart|logins}"
  210.   exit 1
  211.   ;;
  212. esac
  213.  
  214. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement