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

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

Тема в разделе "Управление сервером Bukkit", создана пользователем eXtremeNoN, 13 мар 2014.

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

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

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

    Код:
    #!/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 Старожил Пользователь Заблокирован

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

    Код:
    #!/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 Активный участник Пользователь

    Баллы:
    88
    юзай screen
     
    Larin и eleon нравится это.
  5. InterWall

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

    Баллы:
    173
    Имя в Minecraft:
    InterWall
    eXtremeNoN, только 1 вопрос - debian или что-то другое? Если debian:
    Код:
    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 и eleon нравится это.
  6. Reality_SC

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

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

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

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

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

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

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

    Баллы:
    153
    Имя в Minecraft:
    eXtremeNoN
    Не у всех так.
     
  10. bodya97

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

    Баллы:
    88
    Не везде!
     

Поделиться этой страницей