1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем The.wolk, 20 июн 2013.

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

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

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

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

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

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

    1. Создаём файл с любым именем у меня он будет rest
    Код:
    #!/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
    Код:
    #/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 Думаю написал всё , если будут вопросы задавайте отвечу , скрипт полезен для серверов с модами. Здесь подобного не нашел но думаю если есть судить строго не будете)))

    Доработки

    *Проверка полной остановки сервера
     
    vlad945922, МаКсаН09, qwertyqwerty и 2 другим нравится это.
  2. Suzka

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

    Баллы:
    88
    Имя в Minecraft:
    Suzka
    Супер. Как только доделаю лаунчер займусь этим. Заранее ставлю лайк;)
    Код:
    root@vps215:~# cron -e
    cron: invalid option -- 'e'
    usage: cron
    root@vps215:~#
    
    что случилось?
     
  3. Автор темы
    The.wolk

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

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

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

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

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

    Баллы:
    73
    Имя в Minecraft:
    BoJI4aPa300

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

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