Advertisement
ellisgeek

mc-canary

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