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

restart.sh : Скрипт автоперезагрузки сервера с автовайпом ender мира 1 раз в день.

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

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

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

    Баллы:
    88
    Имя в Minecraft:
    EvilEnginer
    Предполагается что у screen'а c Minecraft'ом имя mc и то что сервер лежит в корне диска в папке mcserver. И то что скрипт запуска сервера start.sh лежит в одной папке со скриптом restart.sh Время выполнения скрипта можно легко настроить в crontab
    например так:
    1) сrontab -e
    2) Вставляем туда то что ниже, /dev/null надо для тихого выполнения скрипта обязательно! В 0 часов 30 минут скрипт выполнится автоматически. Предпочитаю юзать консольный редактор nano. Чтобы сохранить работу нажимаем комбинацию Сtrl + O и Enter затем.

    Код:
    0 30 * * * /mcserver/restart.sh /dev/null 2>&1
    Код:
    #!/bin/sh
    screen -x mc
    screen -S mc -X stuff "say Сервер будет перезагружен через 1 минуту"
    screen -S mc -X eval "stuff \015"
    sleep 15
    screen -S mc -X stuff "say Длительность перезагрузки 30 секунд"
    screen -S mc -X eval "stuff \015"
    sleep 1
    screen -S mc -X stuff "save-all"
    screen -S mc -X eval "stuff \015"
    sleep 15
    screen -S mc -X stuff "say Сервер будет перезагружен через 30 секунд"
    screen -S mc -X eval "stuff \015"
    sleep 15
    screen -S mc -X stuff "say Сервер будет перезагружен через 15 секунд"
    screen -S mc -X eval "stuff \015"
    sleep 5
    screen -S mc -X stuff "say Сервер будет перезагружен через 10 секунд"
    screen -S mc -X eval "stuff \015"
    sleep 5
    screen -S mc -X stuff "say 5"
    screen -S mc -X eval "stuff \015"
    sleep 1
    screen -S mc -X stuff "say 4"
    screen -S mc -X eval "stuff \015"
    sleep 1
    screen -S mc -X stuff "say 3"
    screen -S mc -X eval "stuff \015"
    sleep 1
    screen -S mc -X stuff "say 2"
    screen -S mc -X eval "stuff \015"
    sleep 1
    screen -S mc -X stuff "say 1"
    screen -S mc -X eval "stuff \015"
    sleep 1
    screen -S mc -X stuff "say Перезагрузка сервера..."
    screen -S mc -X eval "stuff \015"
    sleep 2
    screen -S mc -X stuff "stop"
    screen -S mc -X eval "stuff \015"
    sleep 15
    cd /mcserver
    rm -r world_the_end
    sleep 15
    sh start.sh
     
  2. saharin94

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

    Баллы:
    173
    MinecraftRemoteToolkit для этого лучше подходит + сервер поднимает, если он о чём-то задумался.
     
  3. vvswarhead

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

    Баллы:
    173
    О ужас... ну и скриптец

    Предлагаю тебе доработать скрипт:
    1. такая магия канает не всегда и не у всех screen -S mc -X eval "stuff \015" (enter может не отправиться)
    2. скрипт должен определять директорию в которой сидит + заюзай относительные пути (не надо юзать cd)
    3. ты не делаешь проверок на существование процесса сервера, перед удалением мира, то есть: например ты посылаешь stop, сервер начинает останавливаться, но предположим что "sleep 15" ему для остановки не хватило, папка начнет удаляться при включенном сервере - rm- r отвлится, так как отказ в доступе будет
    Аналогично и наоборот, надо дождаться удаления мира, чекнуть это, и только потом запускать сервер

    надеюсь мои замечания будут для тебя полезны, а так похвально, что ты решил заняться скриптописанием
     
  4. Автор темы
    EvilEnginer

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

    Баллы:
    88
    Имя в Minecraft:
    EvilEnginer
    Окей обдумаю этот вопрос. Спасибо за советы.
     
  5. alexandrage

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

    Баллы:
    173
    +1
    И под тулкит можно модули свои писать.
     
  6. saharin94

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

    Баллы:
    173
    А где документацию найти?
     
  7. alexandrage

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

    Баллы:
    173
    Сам не занимался этим, но там можно много всего юзать вплоть до полноценной веб панели.
     
  8. Кеды

    Кеды Новичок Пользователь

    Баллы:
    6
    А как запустить cron ?
     
  9. KobaltMr

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

    Баллы:
    88
    Имя в Minecraft:
    KobaltMR_
  10. Кеды

    Кеды Новичок Пользователь

    Баллы:
    6
    Нет как запустить сервис/приложение крона, просто в topЕ его нет. И как проверить запущен ли крон или нет ?
     
  11. Cristalix

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

    Баллы:
    76
    Имя в Minecraft:
    Test
    А как проверить, запущен ли процесс(сервер)?
     
  12. MurlikMurlik

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

    Баллы:
    96
    Командой top или htop (если установлен)
     
  13. Cristalix

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

    Баллы:
    76
    Имя в Minecraft:
    Test
    А в коде java реально ли получить процессы?
    Можно ли получить все процессы запущенные из определенной директорий(в коде java)?
     

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