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

Утилита Авто-рестарт сервера (linux)

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем pizzlywizzly, 8 май 2013.

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

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

    Баллы:
    123
    [Обновление] 10.08.2014

    Не нашёл подобной темы, а это считаю слишком громоздким, то пришлось написать маленький скриптик. В принципе, ничего особенного в нём нет, но может кому пригодится.

    Зачем это нужно?
    Для проведения рестартов на *nix-подобных системах без плагинов.

    Туториал.
    1. Качаем скрипты по ссылке http://squareland.ru/uploads/files/beedlokod.rar
    rs.sh отвечает за рестарты, а точнее обратный отсчёт, сохранение логов (по умолчанию в /opt/logs/, папке нужно дать права 777) и запуск start.sh после выключения сервера
    start.sh отвечает за запуск сервера
    2. Оба скрипта кладём в папку /opt/
    Не забудьте выставить правильные права на скрипт.​
    chmod 777 /opt/rs.sh
    chmod 777 /opt/start.sh
    3. В rs.sh обязательно укажите 'dir', - это путь к директории с серверами.
    Ваш сервер лежит в /opt/ser/server, тогда укажите dir="/opt/ser"
    4. Пишем crontab -e в консольке, вставляем строчку​
    0 3 * * * /opt/rs.sh > /dev/null
    Скрипт /opt/rs.sh будет запускаться каждый день в 3 часа ночи и перезагружать сервер.
    > /dev/null служит для того, чтобы результаты вывода от скрипта никуда не сохранялись.
    Сохраняем с помощью ctrl + o, выходим ctrl + x [для редактора nano].
    ???
    PROFIT!
    Теперь сервер будет перезагружаться по расписанию. Также этот скрипт просто запустит сервер, если он выключен. В start.sh можете изменить максимальную выделяемую память, по умолчанию она равна 4 гигабайтам.
    Не забудьте запустить сервер через start.sh, чтобы у вас уже был запущен screen при первом же рестарте. Сделать это можно командой /opt/start.sh [servername]
    [Обновление] 03.08.2013

    Не нашёл подобной темы, а это считаю слишком громоздким, то пришлось написать маленький скриптик. В принципе, ничего особенного в нём нет, но может кому пригодится.
    Что делает?
    В этой инструкции описывается, как настроить автоматический рестарт сервера по расписанию. Скрипты через консоль информируют о рестарте, затем происходит остановка сервера и следует перезапуск сервера.
    rs.sh - рестарт сервера и запускает в новом скрине (screen - эмуляция терминала) (либо сами вызываем из консоли, либо назначаем запуск по расписанию).​
    Туториал.
    1. Качаем скрипт по ссылке http://rghost.ru/53051476
    2. rs.sh кладём в папку /opt/ (если в другую, то и в crontab'е путь соответствующий пропишите). Не забудьте выставить права ( chmod 777 ) на скрипт.
    3. В rs.sh обязательно укажите 'path', - это путь к папке с сервером. 'jarfile' - имя java-файла сервера, который вы запускаете.
    Необязательно: можете изменить название скрина, в котором будет запускаться сервер, поменяв значение 'server'.
    4. Пишем 'crontab -e' в консольке, вставляем строчку​
    '0 3 * * * /opt/rs.sh' - скрипт будет запускаться каждый день в 3 часа ночи и перезагружать сервер.
    (Сохраняем с помощью ctrl + o, выходим ctrl + x [для редактора nano]).
    Теперь сервер будет перезагружаться по расписанию. Также этот скрипт просто запустит сервер, если он выключен. В rs.sh можете изменить максимальную выделяемую память, по умолчанию она равна 2 гигам.
    Не забудьте запустить сервер через rs.sh, чтобы у вас уже был запущен screen при первом же рестарте. Сделать это можно командой /opt/rs.sh (если он лежит там)
     
    Последнее редактирование: 10 авг 2014
    skaycraft, slavik123123123, Pasha4444 и 13 другим нравится это.
  2. Автор темы
    pizzlywizzly

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

    Баллы:
    123
    :3
     
  3. dimahru

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

    Баллы:
    153
    Имя в Minecraft:
    dimahru
    Лень разбираться, а за старания лайк) Ошибка(
    No screen session found.
    sleep: неверный временной интервал «30\r»
    Попробуйте `sleep --help' для получения более подробного описания.
    No screen session found.
    sleep: неверный временной интервал «20\r»
    Попробуйте `sleep --help' для получения более подробного описания.
    No screen session found.
    sleep: неверный временной интервал «5\r»
    Попробуйте `sleep --help' для получения более подробного описания.
    No screen session found.
    sleep: неверный временной интервал «1\r»
    Попробуйте `sleep --help' для получения более подробного описания.
    No screen session found.
    sleep: неверный временной интервал «1\r»
    Попробуйте `sleep --help' для получения более подробного описания.
    No screen session found.
    sleep: неверный временной интервал «1\r»
    Попробуйте `sleep --help' для получения более подробного описания.
    No screen session found.
    sleep: неверный временной интервал «1\r»
    Попробуйте `sleep --help' для получения более подробного описания.
    No screen session found.
    No screen session found.
    sleep: неверный временной интервал «1\r»
    Попробуйте `sleep --help' для получения более подробного описания.
    No screen session found.
    sleep: неверный временной интервал «0.5\r»
    Попробуйте `sleep --help' для получения более подробного описания.
    No screen session found.
    sleep: неверный временной интервал «10\r»
    Попробуйте `sleep --help' для получения более подробного описания.
    Use: screen [-opts] [cmd [args]]
    or: screen -r [host.tty]

    Options:
    -a Force all capabilities into each window's termcap.
    -A -[r|R] Adapt all windows to the new display width & height.
    -c file Read configuration file instead of '.screenrc'.
    -d (-r) Detach the elsewhere running screen (and reattach here).
    -dmS name Start as daemon: Screen session in detached mode.
    -D (-r) Detach and logout remote (and reattach here).
    -D -RR Do whatever is needed to get a screen session.
    -e xy Change command characters.
    -f Flow control on, -fn = off, -fa = auto.
    -h lines Set the size of the scrollback history buffer.
    -i Interrupt output sooner when flow control is on.
    -l Login mode on (update /var/run/utmp), -ln = off.
    -list or -ls. Do nothing, just list our SockDir.
    -L Turn on output logging.
    -m ignore $STY variable, do create a new screen session.
    -O Choose optimal output rather than exact vt100 emulation.
    -p window Preselect the named window if it exists.
    -q Quiet startup. Exits with non-zero return code if unsuccessful.
    -r Reattach to a detached screen process.
    -R Reattach if possible, otherwise start a new session.
    -s shell Shell to execute rather than $SHELL.
    -S sockname Name this session <pid>.sockname instead of <pid>.<tty>.<host>.
    -t title Set title. (window's name).
    -T term Use term as $TERM for windows, rather than "screen".
    -U Tell screen to use UTF-8 encoding.
    -v Print "Screen version 4.00.03jw4 (FAU) 2-May-06".
    -wipe Do nothing, just clean up SockDir.
    -x Attach to a not detached screen. (Multi display mode).
    -X Execute <cmd> as a screen command in the specified session.

    Error: Unknown option -wipe
    sleep: неверный временной интервал «1\r»
    Попробуйте `sleep --help' для получения более подробного описания.
     
  4. Автор темы
    pizzlywizzly

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

    Баллы:
    123
    Скрин не был запущен, добавил в оригинальный пост информацию по первому запуску. Остальные ошибки исходят из неё, думаю.
    Продублирую лечение: запустите один раз сервер командой %путь_к_серверу%/start.sh %название_скрина% %путь_к_серверу%
     
  5. dimahru

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

    Баллы:
    153
    Имя в Minecraft:
    dimahru
    Проверю попозже
     
  6. Glowing

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

    Баллы:
    103
    Имя в Minecraft:
    Glowing
    Спасибо полезный скрипт,но можно было в rs запихнуть все.
     
    DavidShabaev нравится это.
  7. Merro

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

    Баллы:
    103
    :( Да это же геморройно. Есть же модуль rtoolkit, зачем так извращаться...
     
    zuma2 нравится это.
  8. Glowing

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

    Баллы:
    103
    Имя в Minecraft:
    Glowing
    Да нечего тут нету геморройного,3-4 минуты дело.
     
    zivgta нравится это.
  9. Merro

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

    Баллы:
    103
    Да ну, проще будет с rtoolkit это дело организовать.

    Ну, а @pizzlywizzly спасибо за туториал, поставил like. ;)
     
  10. Автор темы
    pizzlywizzly

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

    Баллы:
    123
    У меня rtoolkit кодировку шатал, да и просто захотелось что-то легкое написать, что может каждый под себя сделать.
    Но не спорю, rtoolkit более понятен.
     
  11. cnaiper

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

    Баллы:
    103
    А как сделать чтобы рестарт происходил раз в 8 часов например?
     
  12. Автор темы
    pizzlywizzly

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

    Баллы:
    123
    "0 8 * * * /opt/rs.sh" - добавь это в crontab, вместо того, что указанно в оригинальном посте, где
    '0' -минута
    '8 '- час
    '/opt/rs.sh' - путь к скрипту рестарта

    Или нужно каждые 8 часов? (тогда вместо 8 надо прописать каждый час для рестарта, то есть заменить "8" на, допустим, "1,9,17"
     
    GJEvolution и cnaiper нравится это.
  13. Лёман

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

    Баллы:
    68
    Имя в Minecraft:
    lema
    Знаю может показаться глупым но как сделать что бы сервер сам вставал при падение?:confused:
     
    Сникерсни нравится это.
  14. caver

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

    Баллы:
    88
    Skype:
    caver15
    Элементарно, ловим какой pid получил процесс при старте, и кроном опять же чекаем наличие процесса.
    Самое тупое, ловит наличие процесса что то типа ps ax|grep java
    Если куча java процессов на сервере, то можно передать какой нибудь левый параметр-флаг
    что то типа "java -Dmyminecraft -Xmx2g -jar ....." и в конечном итоге пускать в кроне
    ===
    if [[ ! $(ps ax|grep myminecraft|grep -v grep) ]]; then echo "died" ;fi
    ===
    Еще в догонку, мини лекция "Крон для чайников"
    что означают эти страаашшные
    ===
    0 3 * * * /opt/rs.sh
    ===
    1 - минута
    2 - час
    3 - день месяца
    4 - месяц
    5 - день недели
    и далее собственно комманда для исполнения

    параметров можно задать несколько, допустим мне надо выполнить команду в 17 и 36 минут каждого часа
    по понедельникам
    17,36 * * * 1 command.sh
    запускать команду каждые 13 минут
    */13 * * * * command.sh
     
  15. Necrotic

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

    Баллы:
    103
    перезалей скрипты!
     
  16. UnlimNET

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

    Баллы:
    88
    Файл удален...
     
    ВремяПриключений нравится это.
  17. oleg57zls

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

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    Нашел в интернете туториал: ctrl+c, ctrl+v, создать тему. Даже не посмотрел на файл....
     
  18. REZAYS

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

    Баллы:
    153
    Перезалей, пожалуйста!
     
  19. Автор темы
    pizzlywizzly

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

    Баллы:
    123
    Туториал я сам писал, как и скрипты. Так что, дорогой школонатор, изволь исчезнуть. Ссылка на rghost банально умерла.
    Перезалил и сделал апдейт.
     
    UnlimNET нравится это.
  20. UnlimNET

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

    Баллы:
    88
    Спасибо! однозначно лайк.
     

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