Advertisement
Guest User

Untitled

a guest
Dec 25th, 2012
1,753
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.69 KB | None | 0 0
  1. #!/bin/bash
  2. # /etc/init.d/minecraft
  3. # version 0.3.9 2012-08-13 (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. OPTIONS='nogui'
  20. USERNAME='minecraft'
  21. MCPATH='/home/minecraft/minecraft'
  22. MAXHEAP=2048
  23. MINHEAP=1024
  24. INVOCATION="java -Xmx${MAXHEAP}M -Xms${MINHEAP}M
  25. -jar $SERVICE $OPTIONS"
  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  pgrep -u $USERNAME -f $SERVICE > /dev/null
  38.   then
  39.     echo "$SERVICE is already running!"
  40.   else
  41.     echo "Starting $SERVICE..."
  42.     cd $MCPATH
  43.     as_user "cd $MCPATH && screen -h $HISTORY -dmS minecraft $INVOCATION"
  44.     sleep 7
  45.     if pgrep -u $USERNAME -f $SERVICE > /dev/null
  46.     then
  47.       echo "$SERVICE is now running."
  48.     else
  49.       echo "Error! Could not start $SERVICE!"
  50.     fi
  51.   fi
  52. }
  53.  
  54. mc_saveoff() {
  55.   if pgrep -u $USERNAME -f $SERVICE > /dev/null
  56.   then
  57.     echo "$SERVICE is running... suspending saves"
  58.     as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'"
  59.     as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-off\"\015'"
  60.     as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
  61.     sync
  62.     sleep 10
  63.   else
  64.     echo "$SERVICE is not running. Not suspending saves."
  65.   fi
  66. }
  67.  
  68. mc_saveon() {
  69.   if pgrep -u $USERNAME -f $SERVICE > /dev/null
  70.   then
  71.     echo "$SERVICE is running... re-enabling saves"
  72.     as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-on\"\015'"
  73.     as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'"
  74.   else
  75.     echo "$SERVICE is not running. Not resuming saves."
  76.   fi
  77. }
  78.  
  79. mc_stop() {
  80.   if pgrep -u $USERNAME -f $SERVICE > /dev/null
  81.   then
  82.     echo "Stopping $SERVICE"
  83.     as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'"
  84.     as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
  85.     sleep 10
  86.     as_user "screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015'"
  87.     sleep 7
  88.   else
  89.     echo "$SERVICE was not running."
  90.   fi
  91.   if pgrep -u $USERNAME -f $SERVICE > /dev/null
  92.   then
  93.     echo "Error! $SERVICE could not be stopped."
  94.   else
  95.     echo "$SERVICE is stopped."
  96.   fi
  97. }
  98.  
  99. mc_command() {
  100.   command="$1";
  101.   if pgrep -u $USERNAME -f $SERVICE > /dev/null
  102.   then
  103.     pre_log_len=`wc -l "$MCPATH/server.log" | awk '{print $1}'`
  104.     echo "$SERVICE is running... executing command"
  105.     as_user "screen -p 0 -S minecraft -X eval 'stuff \"$command\"\015'"
  106.     sleep .1 # assumes that the command will run and print to the log file in less than .1 seconds
  107.     # print output
  108.     tail -n $[`wc -l "$MCPATH/server.log" | awk '{print $1}'`-$pre_log_len] "$MCPATH/server.log"
  109.   fi
  110. }
  111.  
  112. #Start-Stop here
  113. case "$1" in
  114.   start)
  115.     mc_start
  116.     ;;
  117.   stop)
  118.     mc_stop
  119.     ;;
  120.   restart)
  121.     mc_stop
  122.     mc_start
  123.     ;;
  124.   status)
  125.     if pgrep -u $USERNAME -f $SERVICE > /dev/null
  126.     then
  127.       echo "$SERVICE is running."
  128.     else
  129.       echo "$SERVICE is not running."
  130.     fi
  131.     ;;
  132.   command)
  133.     if [ $# -gt 1 ]; then
  134.       shift
  135.       mc_command "$*"
  136.     else
  137.       echo "Must specify server command (try 'help'?)"
  138.     fi
  139.     ;;
  140.  
  141.   *)
  142.   echo "Usage: $0 {start|stop|status|restart|command \"server command\"}"
  143.   exit 1
  144.   ;;
  145. esac
  146.  
  147. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement