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

Утилита Перезагрузка сервера minecraft (Linux)

Discussion in 'Руководства, инструкции, утилиты' started by The.wolk, Jun 20, 2013.

  1. Автор темы
    The.wolk

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

    Trophy Points:
    73
    Имя в Minecraft:
    BoJI4aPa300
    Доброго времени суток форумчане.

    Совсем недавно мне понадобился скрипт который проверяет сколько % оперативной памяти занимает java, но полазив по интернету я нечего не нашел и решил написать сам протестировал на своем сервере и всё работало просто прекрасно. И вот я решил поделиться им с вами мало ли пригодится.

    P.S строго не судите мой первый скрипт :))

    Что он умеет. Скрипт запускается по crond каждые 8 мин (можно установить своё время) и проверяет сколько % оперативной памяти занимает процесс Java и если она занимает больше установленного значения, то скрипт даёт команду на остановку сервера. И потом через определенный промежуток времени запускает его снова.

    1. Создаём файл с любым именем у меня он будет rest
    Code:
    #!/bin/bash
     
    max=78
    mem=`ps -eo comm,%mem | grep java  | awk '{ print $2 }'`
    name=`ps -eo comm,%mem | grep java  | awk '{ print $1 }'`
     
    dmem=`echo "($mem + 0.5)/1" | bc`
     
    if [ $name ]
    then
    if [[ "$dmem" -gt "$max" ]];
    then
    screen -p 0 -S minecraft -X eval 'stuff "say Запущен скрипт перезапуска..."\015'
    sleep 5
    screen -p 0 -S minecraft -X eval 'stuff "say Перезапуск сервера через 60 секунд"\015'
    sleep 30
    screen -p 0 -S minecraft -X eval 'stuff "say Перезапуск сервера через 30 секунд"\015'
    sleep 15
    screen -p 0 -S minecraft -X eval 'stuff "say Перезапуск сервера через 15 секунд"\015'
    sleep 5
    screen -p 0 -S minecraft -X eval 'stuff "say Перезапуск сервера через 10 секунд"\015'
    sleep 5
    screen -p 0 -S minecraft -X eval 'stuff "say Перезапуск сервера через 5 секунд"\015'
    sleep 5
    screen -p 0 -S minecraft -X eval 'stuff "say Перезапуск сервера..."\015'
    screen -p 0 -S minecraft -X eval 'stuff "stop Перезагрузка"\015'
    name=`ps -eo comm,%mem | grep java  | awk '{ print $1 }'`
    while [ "go$name" = "gojava" ]
    do
    echo java active
    sleep 1
    name=`ps -eo comm,%mem | grep java  | awk '{ print $1 }'`
    done
    cd /newserver
    ./start.sh
    fi
    else 
    echo java no started
    fi
    
    max=78 ограничение в % потребляемой RAM изменяется в пределах 0-100
    cd /newserver - путь до директории с сервером (может быть и другой путь)
    ./start.sh - запуск сервера (может быть и другое название)
    Настройка времени перезагрузки осуществляется через команду sleep "значение"

    2. Создаем файл к примеру start.sh
    Code:
    #/bin/sh
    /usr/bin/screen -d -m -S minecraft /usr/bin/java -Xincgc -Xmx4G -jar server.jar nogui
    Тут думаю без вопросов :) Для всех файлов выставляем права доступа chmod +x rest и start.sh

    3. Добавляем авто запуск скрипта
    crontab -e
    */8 * * * * /путь/до/скрипта - обновление скрипта каждые 8 минут

    PROFIT

    P.S Думаю написал всё , если будут вопросы задавайте отвечу , скрипт полезен для серверов с модами. Здесь подобного не нашел но думаю если есть судить строго не будете)))

    Доработки

    *Проверка полной остановки сервера
     
  2. Хостинг MineCraft
    <
  3. Suzka

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

    Trophy Points:
    88
    Имя в Minecraft:
    Suzka
    Супер. Как только доделаю лаунчер займусь этим. Заранее ставлю лайк;)[DOUBLEPOST=1372023991,1371827592][/DOUBLEPOST]
    Code:
    root@vps215:~# cron -e
    cron: invalid option -- 'e'
    usage: cron
    root@vps215:~#
    
    что случилось?
     
  4. Автор темы
    The.wolk

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

    Trophy Points:
    73
    Имя в Minecraft:
    BoJI4aPa300
    Чтобы скрпит в автозапуск добавить в консоли пиши crontab -e и в самом конце дописываешь строчку */8 * * * * /путь/до/скрипта где 8 время повторения в мин
     
  5. Suzka

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

    Trophy Points:
    88
    Имя в Minecraft:
    Suzka
    уже сломался крон. Выше я написал строчки с консоли. У меня с этим трудности, помогите пожалуйста. Раз 10 писал до поломки, а сохранять как?
     
  6. Автор темы
    The.wolk

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

    Trophy Points:
    73
    Имя в Minecraft:
    BoJI4aPa300

    чтобы сохранить ctrl+o и выйти ctrl+x
     
    Suzka likes this.

Share This Page