Advertisement
VlAleVas

main script

Nov 20th, 2013
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.86 KB | None | 0 0
  1. #!/bin/bash
  2. # /etc/init.d/minecraft
  3. # version 0.3.7 2012-03-06 (YYYY-MM-DD)
  4. ### BEGIN INIT INFO
  5. # Provides:   minecraft
  6. # Required-Start: $local_fs $remote_fs
  7. # Required-Stop:  $local_fs $remote_fs
  8. # Should-Start:   $network
  9. # Should-Stop:    $network
  10. # Default-Start:  2 3 4 5
  11. # Default-Stop:   0 1 6
  12. # Short-Description:    Minecraft server
  13. # Description:    Starts the minecraft server
  14. ### END INIT INFO
  15.  
  16. #Settings
  17. SCREEN_NAME="server"
  18. RESTARTER="Путь к restarter"
  19. SERVICE='minecraftforge.jar'
  20. OPTIONS='nogui'
  21. USERNAME='root'
  22. WORLD='world'
  23. MCPATH='/home/server'
  24. BACKUPPATH='/home/server/backup'
  25. CPU_COUNT=1
  26. INVOCATION="java -Xmx512M -Xms512M  -XX:MaxPermSize=256m -XX:PermSize=256m -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts -jar $SERVICE $OPTIONS"
  27. ME=`whoami`
  28. SCRIPT=`readlink -nf $0`
  29.  
  30. check_service() {
  31.   screen -list | grep -q "$SCREEN_NAME"
  32.   return $?
  33. }
  34.  
  35. as_user() {
  36.   if [ $ME == $USERNAME ] ; then
  37.     bash -c "$1"
  38.   else
  39.     su - $USERNAME -c "$1"
  40.   fi
  41. }
  42.  
  43. mc_start() {
  44.   if check_service; then
  45.     screen -x $SCREEN_NAME
  46.   else
  47.     echo "Starting $SERVICE..."
  48.     as_user "cd $MCPATH && screen -dmS $SCREEN_NAME bash -c \"$INVOCATION 2>&1 | tee /dev/tty | $RESTARTER $SCRIPT\""
  49.     sleep 7
  50.     if check_service; then
  51.       echo "$SERVICE is now running."
  52.     else
  53.       echo "Error! Could not start $SERVICE!"
  54.     fi
  55.   fi
  56. }
  57.  
  58. mc_saveoff() {
  59.   if check_service; then
  60.     echo "$SERVICE is running... suspending saves"
  61.     mc_command "say СОХРАНЕНИЕ СЕРВЕРА ЗАПУЩЕНО..."
  62.     mc_command "save-off"
  63.     mc_command "save-all"
  64.     sync
  65.     sleep 10
  66.   else
  67.     echo "$SERVICE is not running. Not suspending saves."
  68.   fi
  69. }
  70.  
  71. mc_saveon() {
  72.   if check_service; then
  73.     echo "$SERVICE is running... re-enabling saves"
  74.     mc_command "save-on"
  75.     mc_command "say СОХРАНЕНИЕ СЕРВЕРА ЗАВЕРШЕНО..."
  76.   else
  77.     echo "$SERVICE is not running. Not resuming saves."
  78.   fi
  79. }
  80.  
  81. mc_stop() {
  82.   if check_service; then
  83.     echo "Stopping $SERVICE"
  84.     mc_command "say СЕРВЕР БУДЕТ ВЫКЛЮЧЕН ЧЕРЕЗ 10 СЕКУНД И СОХРАНЕНА КАРТА"
  85.     mc_command "save-all"
  86.     sleep 10
  87.     mc_command "stop"
  88.     sleep 7
  89.   else
  90.     echo "$SERVICE was not running."
  91.   fi
  92.   if check_service; then
  93.     echo "Error! $SERVICE could not be stopped."
  94.   else
  95.     echo "$SERVICE is stopped."
  96.   fi
  97. }
  98.  
  99. mc_backup() {
  100.    sleep 10
  101.    mc_saveoff
  102.    
  103.    NOW=`date "+%Y-%m-%d_%Hh%M"`
  104.    BACKUP_FILE="$BACKUPPATH/${WORLD}_${NOW}.tar"
  105.    echo "Backing up minecraft world..."
  106.    #as_user "cd $MCPATH && cp -r $WORLD $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"`"
  107.    as_user "tar -C \"$MCPATH\" -cf \"$BACKUP_FILE\" $WORLD"
  108.    mc_saveon
  109.    echo "Compressing backup..."
  110.    as_user "gzip -f \"$BACKUP_FILE\""
  111.    echo "Done."
  112. }
  113.  
  114. mc_command() {
  115.   command="$1";
  116.   if check_service; then
  117.     pre_log_len=`wc -l "$MCPATH/server.log" | awk '{print $1}'`
  118.     echo "$SERVICE is running... executing command"
  119.     as_user "screen -p 0 -S $SCREEN_NAME -X eval 'stuff \"$command\"\015'"
  120.     sleep .1 # assumes that the command will run and print to the log file in less than .1 seconds
  121.     # print output
  122.     tail -n $[`wc -l "$MCPATH/server.log" | awk '{print $1}'`-$pre_log_len] "$MCPATH/server.log"
  123.   fi
  124. }
  125.  
  126. #Start-Stop here
  127. case "$1" in
  128.   start)
  129.     mc_start
  130.     ;;
  131.   stop)
  132.     mc_stop
  133.     ;;
  134.   restart)
  135.     mc_backup
  136.     mc_stop
  137.     mc_start
  138.     ;;
  139.   backup)
  140.     mc_backup
  141.     ;;
  142.   status)
  143.     if check_service; then
  144.       echo "$SERVICE is running."
  145.     else
  146.       echo "$SERVICE is not running."
  147.     fi
  148.     ;;
  149.   command)
  150.     if [ $# -gt 1 ]; then
  151.       shift
  152.       mc_command "$*"
  153.     else
  154.       echo "Must specify server command (try 'help'?)"
  155.     fi
  156.     ;;
  157.   *)
  158.     mc_start
  159.     ;;
  160. esac
  161. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement