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

Обсудим Авто запуск сервера на Ubuntu

Тема в разделе "Управление сервером Bukkit", создана пользователем dirt34, 24 мар 2016.

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

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

    Баллы:
    143
    Skype:
    alucid2
    Имя в Minecraft:
    dirt34
    Подскажите пожалуйста. Есть два вопроса.
    1.
    Есть такой скрипт:
    Код:
    #!/bin/bash
    while :
    do
        ./start.sh
        echo "Waiting before restarting"
        sleep 10
    done
    start.sh:
    Код:
    java -server -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=2 -XX:+AggressiveOpts -Xms512M -Xmx6144M -Dfile.encoding=UTF-8 -jar KCauldron.jar nogui
    Вопрос. Как сделать так что бы сервер не стартовал заново если он был остановлен командой "stop"?
    И возможно ли сделать так что бы если сервер был перезапущен(от краша к примеру) отправлялось письмо на e-mail?

    2. Как сделать автозапуск сервера после включения виртуальной машины?

    Ubuntu
     
  2. Хостинг MineCraft
    <
  3. Will Orion Z

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

    Баллы:
    76
    Имя в Minecraft:
    willorion
    https://github.com/superjamie/minecraft-init-script
    А дальше уже сам разбирайся, это образец демона под систему инициализации Init-v. Там много лишних функций, больше половины можешь вычистить.
    Изначально рассчитан под лицензионные сервера.
     
  4. Alexgrist

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

    Баллы:
    173
    Remotetoolkit хорош для перезапуска, даже при зависаниях и крашах.
    А чтоб после ребута машинки скрипт начинал работать - добавляй в автозагрузку скрипт или просто в крон задачу.
     
  5. Автор темы
    dirt34

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

    Баллы:
    143
    Skype:
    alucid2
    Имя в Minecraft:
    dirt34
    у меня лицензионный сервер. Спасибо.
    Как я добавлю в автозагрузку если будет стоять Remotetoolkit?
    Крон ставится на моей машине?
     
  6. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Точно так же, указав на главный скрипт.
    К примеру у меня такой главный скрипт.

    Код:
    cd "`dirname "$0"`";
    screen -S server1 sh rtoolkit.sh;
     
  7. _Spark_

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

    Баллы:
    78
    /etc/rc.local
     
  8. Автор темы
    dirt34

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

    Баллы:
    143
    Skype:
    alucid2
    Имя в Minecraft:
    dirt34
    у меня нет такого.[DOUBLEPOST=1459146187,1459146140][/DOUBLEPOST]
    а остановить как?[DOUBLEPOST=1459168384][/DOUBLEPOST]@alexandrage хотелось бы изменить существующий у меня скрипт на старт и остановку отдельно. RToolKit мне не нужен - лишний.
    Скрипт запуска считай есть. Нужно скрипт остановки. Проблема в том что в скрипте старта бесконечный цикл... и при остановке он запустит снова сервер. Вопрос как сделать стоп так что бы он не запускался. Подскажи пожалуйста.
     
  9. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Отправить команду в скрин .stopwrapper для полной остановки. Все просто.
     
  10. Автор темы
    dirt34

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

    Баллы:
    143
    Skype:
    alucid2
    Имя в Minecraft:
    dirt34
    зачем stopwrapper? у меня не будет RtoolKit. просто два скрипта на старт и запуск.

    И теперь вопрос в другом. как отправить команду скриптом? не вручную.
     
  11. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Ну тогда сам изобретай велосипеды, если врапер не не нравится.
     
  12. Автор темы
    dirt34

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

    Баллы:
    143
    Skype:
    alucid2
    Имя в Minecraft:
    dirt34
    хэх. ладно.
    Как скриптом выполнить команду? не руками вписать а что бы скрипт см остановил.. что писать?
     
  13. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Тогда вот тебе костыль.
    Код:
    cd "`dirname "$0"`" echo "true" >restartserver while $restartserver; do java -jar spigot.jar read restartserver <"restartserver" done
    записываем в файл restartserver false и на сервер команду stop.
     
  14. Автор темы
    dirt34

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

    Баллы:
    143
    Skype:
    alucid2
    Имя в Minecraft:
    dirt34
    @alexandrage
    Вот что я нарыл.
    Код:
    #!/bin/bash
    # /etc/init.d/cloudatlas
    
      ### BEGIN INIT INFO
      # Provides:   cloudatlas
      # 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:    CloudAtlas
      # Description:    Starts the minecraft server
      ### END INIT INFO
    
    #Settings
    SERVICE='KCauldron.jar'
    USERNAME="Tsyklop"
    MCPATH='/home/Tsyklop/Server'
    ## If you have more than one Minecraft instance to control, add additional MCPATH
    ## variables below
    # MCPATH2='/home/mcuser/minecraft2'
    
    
    ME=`whoami`
    as_user() {
      if ["$ME" == "$USERNAME"] ; then
        bash -c "$1"
      else
        su - $USERNAME -c "$1"
      fi
    }
    
    mc_start() {
      if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
      then
        echo "Tried to start but $SERVICE was already running!"
      else
        echo "$SERVICE was not running... starting."
        cd $MCPATH
        as_user "cd $MCPATH && screen -dmS Server java -server -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=2 -XX:+AggressiveOpts -Xms512M -Xmx6144M -Dfile.encoding=UTF-8 -jar KCauldron.jar nogui"
        ## Add additional lines for additioanl Minecrat instances below here
        # as_user "cd $MCPATH2 && screen -dmS creative-mc java -Xmx2048M -Xms2048M -jar minecraft_server.jar nogui"
        sleep 7
        if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
        then
          echo "$SERVICE is now running."
        else
          echo "Could not start $SERVICE."
        fi
      fi
    }
    
    mc_stop() {
            if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
            then
                    echo "$SERVICE is running... stopping."
                    ## Add a line for each task for each Minecraft server you're controlling
                    as_user "screen -p 0 -S Server -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'"
                    # as_user "screen -p 0 -S creative-mc -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'"
                    as_user "screen -p 0 -S Server -X eval 'stuff \"save-all\"\015'"
                    # as_user "screen -p 0 -S creative-mc -X eval 'stuff \"save-all\"\015'"
                    sleep 10
                    as_user "screen -p 0 -S Server -X eval 'stuff \"stop\"\015'"
                    # as_user "screen -p 0 -S creative-mc -X eval 'stuff \"stop\"\015'"
                    sleep 7
            else
                    echo "$SERVICE was not running."
            fi
            if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
            then
                    echo "$SERVICE could not be shut down... still running."
            else
                    echo "$SERVICE is shut down."
            fi
    }
    
    #Start-Stop here
    case "$1" in
      start)
        mc_start
        ;;
      stop)
        mc_stop
        ;;
      restart)
        mc_stop
        mc_start
        ;;
      status)
        if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
        then
          echo "$SERVICE is running."
        else
          echo "$SERVICE is not running."
        fi
        ;;
    
      *)
      echo "Usage: /etc/init.d/cloudatlas {start|stop|status|restart}"
      exit 1
      ;;
    esac
    
    exit 0  
    При запуске он мне выдаёт такое:
    file.sh: 27: file.sh: [root: not found

    Что не так?
     
  15. Will Orion Z

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

    Баллы:
    76
    Имя в Minecraft:
    willorion
    :good:
     
  16. Автор темы
    dirt34

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

    Баллы:
    143
    Skype:
    alucid2
    Имя в Minecraft:
    dirt34
    @InterVi Выше твоего поста есть мой пост. там Скрипт который я надыбал в инете. Там выдаёт ошибку. Можешь подсказать почему?
    Твой скрипт попробую. Спасибо
     
  17. Автор темы
    dirt34

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

    Баллы:
    143
    Skype:
    alucid2
    Имя в Minecraft:
    dirt34
    Да. Может путь.... скрипт находится в папке Tsyklop....
     
  18. Автор темы
    dirt34

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

    Баллы:
    143
    Skype:
    alucid2
    Имя в Minecraft:
    dirt34
    Захожу под свои пользователем. не с root.
     
  19. Krysinski

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

    Баллы:
    61
    Имя в Minecraft:
    Krysinski
    Я понял в чем может быть дело)
    В скрипте используются команды, доступные только root, например su:
    su - $USERNAME -c "$1"
    Сделай владельцем скрипта root, чтобы он запускался от его имени. Права на запуск дай всем, а вот на редактирование оставь только владельцу. Так как если ктото внесет в этот скрипт любую команду, она выполнится от root и произойдет бида)
     
  20. Автор темы
    dirt34

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

    Баллы:
    143
    Skype:
    alucid2
    Имя в Minecraft:
    dirt34
    Хм. спасибо. попробую.[DOUBLEPOST=1459627154,1459619354][/DOUBLEPOST]
    я добавил тот скрипт в crontab моего юзера. он выполняется корректно но ошибка напрягает.
     
  21. Автор темы
    dirt34

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

    Баллы:
    143
    Skype:
    alucid2
    Имя в Minecraft:
    dirt34
    не могу знать. я не вижу этого. Я не знаю как посмотреть лог кронтаба.[DOUBLEPOST=1459668502,1459667573][/DOUBLEPOST]@InterVi твой скрипт ведь можно запускать с помощью крона?
     

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