Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: Wacky on Jun 21st, 2012  |  syntax: None  |  size: 4.42 KB  |  hits: 75  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #!/bin/bash
  2. # Simple bukkit startup script by Piffey
  3. # This is by no means a clean script, but it will get the job done.
  4. # Suggestions? Improvements? Let me know at Piffey.com
  5.  
  6. # All of the screen stuff was adapted from ragon's <frederik.engels24 AT gmail DOT com> script for his Arch Linux package.
  7. # Reason: I don't use screen, but it's likely the best option for anyone looking for a simple script they can run and ignore.
  8. # His script worked perfect for my first server too. Thanks ragon.
  9.  
  10. # Set these values to match your server's settings.
  11.  
  12. backupdir=/home/server/bukkit/
  13. bukkitdir=/home/server/bukkit/
  14. bukkitfilename=craftbukkit.jar
  15. bukkitupdate=craftbukkit-updater.jar
  16.  
  17. backupmsg="You's a big fine server, won't ya back that thing up. World file who ya playin wit, back dat thing up."
  18.  
  19. dateformat=$(date '+%Y%m%dh%Hm%M')
  20.  
  21. # Make sure you change this to the name of your world folder! Add additional worlds by separating them with a white space. If you only have one world, change this to have only one value like "world" or "creative".
  22. declare -a worlds=(world world_nether)
  23. numworlds=${#worlds[@]}
  24.  
  25. # Set these for the amount of RAM you want to allocate. Good practice is to have the numbers match.
  26. # This is the Java heap max and initial size.
  27.  
  28. javaparams="-server -Xms4G -Xmx4G -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:ParallelGCThreads=5 -XX:+CMSParallelRemarkEnabled -XX:+DisableExplicitGC -XX:MaxGCPauseMillis=5"
  29.  
  30. # You can find this location with "whereis java". Make sure this points to the binary.
  31.  
  32. javaloc=java
  33.  
  34. # This currently points to the "preferred" release for bukkit which is kind of like a stable version.
  35. # Change this value if you want to use the snapshot release.
  36. bukkiturl=http://ci.bukkit.org/job/dev-CraftBukkit/promotion/latest/Recommended/artifact/target/craftbukkit-0.0.1-SNAPSHOT.jar
  37.  
  38. startbukkit()
  39. {
  40.     if [ "$(screen -ls | grep bukkit)" == "" ] ; then
  41.         cd $bukkitdir
  42.         screen -S bukkit -dmS $javaloc $javaparams -jar $bukkitdir$bukkitfilename
  43.         echo "Starting bukkit server."
  44.     else
  45.         echo "Bukkit is already running."
  46.         exit 0
  47.     fi
  48. }
  49.  
  50. stopbukkit()
  51. {
  52.     if [ "$(screen -ls | grep bukkit)" == "" ] ; then
  53.         echo "Bukkit is not running."
  54.         exit 0
  55.     else
  56.         screen -S bukkit -p 0 -X stuff "stop$(echo -ne '\r')"
  57.         sleep 5
  58.     fi
  59. }
  60.  
  61. updatebukkit()
  62. {
  63.     if [ "$(screen -ls | grep bukkit)" == "" ] ; then
  64.         sleep 0
  65.     else
  66.         screen -S bukkit -p 0 -X stuff "say Going down for an update in 60 seconds.$(echo -ne '\r')"
  67.         sleep 55
  68.         screen -S bukkit -p 0 -X stuff "say Going down for an update in 5 seconds.$(echo -ne '\r')"
  69.         sleep 5
  70.         stopbukkit        
  71.     fi
  72.  
  73.     wget -O $bukkitdir$bukkitupdate $bukkiturl
  74.     sleep 5
  75.     mv $bukkitdir$bukkitupdate $bukkitdir$bukkitfilename
  76.     sleep 5
  77. }
  78.  
  79. backupbukkit()
  80. {
  81.     echo "Starting multiworld backup..."
  82.     if [ "$(screen -ls | grep bukkit)" == "" ] ; then
  83.         sleep 0
  84.     else
  85.         screen -S bukkit -p 0 -X stuff "say '$backupmsg' $(echo -ne '\r')"
  86.         screen -S bukkit -p 0 -X stuff "save-all$(echo -ne '\r')"
  87.         sleep 5
  88.         screen -S bukkit -p 0 -X stuff "save-off$(echo -ne '\r')"
  89.     fi
  90.     if [ -d $backupdir ] ; then
  91.         sleep 0
  92.     else
  93.         mkdir -p $backupdir
  94.     fi
  95.     for ((i=0;i<$numworlds;i++)); do
  96.         cp -R $bukkitdir${worlds[$i]} $backupdir$dateformat
  97.         echo "Saving '${worlds[$i]}' to '$backupdir$dateformat'"
  98.     done
  99.  
  100.     if [ "$(screen -ls | grep bukkit)" == "" ] ; then
  101.         sleep 0
  102.     else
  103.         sleep 5
  104.         screen -S bukkit -p 0 -X stuff "save-on$(echo -ne '\r')"
  105.     fi
  106.     echo "Backup complete."
  107. }
  108.  
  109. case $1 in
  110.     start)
  111.         startbukkit
  112.         ;;
  113.     stop)
  114.         stopbukkit
  115.         ;;
  116.     restart)
  117.         stopbukkit
  118.         sleep 5
  119.         startbukkit
  120.         ;;
  121.     update)
  122.         updatebukkit
  123.         ;;
  124.     backup)
  125.         backupbukkit
  126.         ;;
  127.     friendlystop)
  128.         screen -S bukkit -p 0 -X stuff "say Going down in 5 minutes.$(echo -ne '\r')"
  129.         sleep 240
  130.         screen -S bukkit -p 0 -X stuff "say Going down in 60 seconds.$(echo -ne '\r')"
  131.         sleep 55
  132.         screen -S bukkit -p 0 -X stuff "say Going down in 5 seconds.$(echo -ne '\r')"
  133.         sleep 5
  134.         stopbukkit
  135.         ;;
  136.     *)
  137.         echo "Usage: $0 {start|stop|restart|update|backup|friendlystop}"
  138. esac
  139.  
  140. exit 0