Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Запуск через cron или PuTTY

Discussion in 'Управление сервером Bukkit' started by eXtremeNoN, Mar 13, 2014.

  1. Автор темы
    eXtremeNoN

    eXtremeNoN Старожил Пользователь Заблокирован

    Trophy Points:
    153
    Имя в Minecraft:
    eXtremeNoN
    Нужно запустить сервер майна на вдске, не важно через cron или PuTTY, проблема том, если через putty то при запуске сервера и выхода из putty, сервер офается, если же через cron, я пробовал указать путь до start.sh (у меня /minecraft/start.sh) но при выполнении команды выдаёт ошибку "Exited with return code = 127". Юзал много тем и другое, нашёл вот какой скрипт:

    Code:
    #!/bin/bash
    # /etc/init.d/minecraft
    # version 0.3.7 2012-03-06 (YYYY-MM-DD)
    ### BEGIN INIT INFO
    # Provides:  minecraft
    # Required-Start: $local_fs $remote_fs
    # Required-Stop:  $local_fs $remote_fs
    # Should-Start:  $network
    # Should-Stop:    $network
    # Default-Start:  2 3 4 5
    # Default-Stop:  0 1 6
    # Short-Description:    Minecraft server
    # Description:    Starts the minecraft server
    ### END INIT INFO
    #Settings
    SERVICE='craftbukkit.jar'
    OPTIONS='nogui'
    USERNAME='minecraft'
    WORLD='world'
    MCPATH='/minecraft'
    BACKUPPATH='/media/remote.share/minecraft.backup'
    CPU_COUNT=1
    INVOCATION="java -Xmx1024M -Xms1024M -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts -jar $SERVICE $OPTIONS"
    ME=`whoami`
    as_user() {
      if [ $ME == $USERNAME ] ; then
        bash -c "$1"
      else
        su - $USERNAME -c "$1"
      fi
    }
    mc_start() {
      if  pgrep -u $USERNAME -f $SERVICE > /dev/null
      then
        echo "$SERVICE is already running!"
      else
        echo "Starting $SERVICE..."
        cd $MCPATH
        as_user "cd $MCPATH && screen -dmS minecraft $INVOCATION"
        sleep 7
        if pgrep -u $USERNAME -f $SERVICE > /dev/null
        then
          echo "$SERVICE is now running."
        else
          echo "Error! Could not start $SERVICE!"
        fi
      fi
    }
    mc_saveoff() {
      if pgrep -u $USERNAME -f $SERVICE > /dev/null
      then
        echo "$SERVICE is running... suspending saves"
        as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'"
        as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-off\"\015'"
        as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
        sync
        sleep 10
      else
        echo "$SERVICE is not running. Not suspending saves."
      fi
    }
    mc_saveon() {
      if pgrep -u $USERNAME -f $SERVICE > /dev/null
      then
        echo "$SERVICE is running... re-enabling saves"
        as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-on\"\015'"
        as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'"
      else
        echo "$SERVICE is not running. Not resuming saves."
      fi
    }
    mc_stop() {
      if pgrep -u $USERNAME -f $SERVICE > /dev/null
      then
        echo "Stopping $SERVICE"
        as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'"
        as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
        sleep 10
        as_user "screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015'"
        sleep 7
      else
        echo "$SERVICE was not running."
      fi
      if pgrep -u $USERNAME -f $SERVICE > /dev/null
      then
        echo "Error! $SERVICE could not be stopped."
      else
        echo "$SERVICE is stopped."
      fi
    }
    mc_update() {
      if pgrep -u $USERNAME -f $SERVICE > /dev/null
      then
        echo "$SERVICE is running! Will not start update."
      else
        MC_SERVER_URL=http://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar?v=`date | sed "s/[^a-zA-Z0-9]/_/g"`
        as_user "cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL"
        if [ -f $MCPATH/minecraft_server.jar.update ]
        then
          if `diff $MCPATH/$SERVICE $MCPATH/minecraft_server.jar.update >/dev/null`
          then
            echo "You are already running the latest version of $SERVICE."
          else
            as_user "mv $MCPATH/minecraft_server.jar.update $MCPATH/$SERVICE"
            echo "Minecraft successfully updated."
          fi
        else
          echo "Minecraft update could not be downloaded."
        fi
      fi
    }
    mc_backup() {
      mc_saveoff
     
      NOW=`date "+%Y-%m-%d_%Hh%M"`
      BACKUP_FILE="$BACKUPPATH/${WORLD}_${NOW}.tar"
      echo "Backing up minecraft world..."
      #as_user "cd $MCPATH && cp -r $WORLD $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"`"
      as_user "tar -C \"$MCPATH\" -cf \"$BACKUP_FILE\" $WORLD"
      echo "Backing up $SERVICE"
      as_user "tar -C \"$MCPATH\" -rf \"$BACKUP_FILE\" $SERVICE"
      #as_user "cp \"$MCPATH/$SERVICE\" \"$BACKUPPATH/minecraft_server_${NOW}.jar\""
      mc_saveon
      echo "Compressing backup..."
      as_user "gzip -f \"$BACKUP_FILE\""
      echo "Done."
    }
    mc_command() {
      command="$1";
      if pgrep -u $USERNAME -f $SERVICE > /dev/null
      then
        pre_log_len=`wc -l "$MCPATH/server.log" | awk '{print $1}'`
        echo "$SERVICE is running... executing command"
        as_user "screen -p 0 -S minecraft -X eval 'stuff \"$command\"\015'"
        sleep .1 # assumes that the command will run and print to the log file in less than .1 seconds
        # print output
        tail -n $[`wc -l "$MCPATH/server.log" | awk '{print $1}'`-$pre_log_len] "$MCPATH/server.log"
      fi
    }
    #Start-Stop here
    case "$1" in
      start)
        mc_start
        ;;
      stop)
        mc_stop
        ;;
      restart)
        mc_stop
        mc_start
        ;;
      update)
        mc_stop
        mc_backup
        mc_update
        mc_start
        ;;
      backup)
        mc_backup
        ;;
      status)
        if pgrep -u $USERNAME -f $SERVICE > /dev/null
        then
          echo "$SERVICE is running."
        else
          echo "$SERVICE is not running."
        fi
        ;;
      command)
        if [ $# -gt 1 ]; then
          shift
          mc_command "$*"
        else
          echo "Must specify server command (try 'help'?)"
        fi
        ;;
      *)
      echo "Usage: $0 {start|stop|update|backup|status|restart|command \"server command\"}"
      exit 1
      ;;
    esac
    exit 0

    В этом скрипте когда всё настроил идёт ошибка: Syntax error: word unexpected (expecting "in")
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    eXtremeNoN

    eXtremeNoN Старожил Пользователь Заблокирован

    Trophy Points:
    153
    Имя в Minecraft:
    eXtremeNoN
    И еще доплню, у меня в start.sh на данный момент вот такой скрипт:

    Code:
    #!/bin/sh
                BINDIR=$(dirname "$(readlink -fn "$0")")
                cd "\$BINDIR"
                while true
                do
                    java -Xincgc -Xmx2G -jar craftbukkit.jar
                    echo "Чтобы остановить сервер зажмите Ctrl + C!"
                    echo "Перезагрузка через:"
                    for i in 5 4 3 2 1
                    do
                        echo "$i..."
                        sleep 1
                    done
                    echo "Перезагрузка!"
                done
     
  4. bodya97

    bodya97 Активный участник Пользователь

    Trophy Points:
    88
    юзай screen
     
    Larin and eleon like this.
  5. InterWall

    InterWall Старожил Пользователь

    Trophy Points:
    173
    Имя в Minecraft:
    InterWall
    eXtremeNoN, только 1 вопрос - debian или что-то другое? Если debian:
    Code:
    apt-get install screen
    screen
    Нажимаем [Enter]
    screen -r
    ./start.sh
    В скрипте надо прописать только запуск приложения. Выходить из скрина - ctrl+a+d.[DOUBLEPOST=1394752350,1394752258][/DOUBLEPOST]А также для отсутствия дальнейших вопросов советую использовать вместо putty zoc. Более продвинутая программа, по сравнению с той-же putty. http://www.emtec.com/zoc/
     
    Larin and eleon like this.
  6. Reality_SC

    Reality_SC Старожил Пользователь

    Trophy Points:
    123
    Имя в Minecraft:
    Reality_SC
    Я юзаю
    Code:
    nohup java -Xmx30M -Xms30M -XX:MaxPermSize=40M -jar Minecraft_RKit.jar > /dev/null &
    разницы со screen не вижу =)
     
    Larin and eleon like this.
  7. Автор темы
    eXtremeNoN

    eXtremeNoN Старожил Пользователь Заблокирован

    Trophy Points:
    153
    Имя в Minecraft:
    eXtremeNoN
    Проблему решил, помог "screen, cron -e", но возник еще один вопрос, при падении сервера (самого ВДС), сервер майна не включается, а нужно зайти в putty(да в любой ssh клиент) и включить его, а так, если сам сервера майнкрафта упал то уже сам перезагружается.
    P.S скрин у меня установлен, толком не знал как работать
    P.S.S установлен дебиан 7.2 x64
     
    eleon likes this.
  8. WCRAFT

    WCRAFT Старожил Пользователь

    Trophy Points:
    173
    Skype:
    worldplaytv
    Имя в Minecraft:
    World
    По моему скрин по дефолту ребутится вместе с вдс.
     
  9. Автор темы
    eXtremeNoN

    eXtremeNoN Старожил Пользователь Заблокирован

    Trophy Points:
    153
    Имя в Minecraft:
    eXtremeNoN
    Не у всех так.
     
  10. bodya97

    bodya97 Активный участник Пользователь

    Trophy Points:
    88
    Не везде!
     

Share This Page