AutoRestart: автоматический перезапуск сервера Minecraft на Linux

Зачем нужен автоматический перезапуск сервера Minecraft на Linux Каждый администратор игрового мира рано или поздно сталкивается с внезапными падениями сервера. Причины могут быть разными: нехватка оперативной памяти, конфликт плагинов, ошибка в сборке или даже внезапное отключение электричества....

Скачать ShellScripts для Minecraft 1.7.6

Оригинальное название: ShellScripts

Версии Minecraft: 1.7.6

ФайлВерсияЗагрузчикРазмер
ShellScripts.zip1.7.6—1 КБСкачать

Зачем нужен автоматический перезапуск сервера Minecraft на Linux

Каждый администратор игрового мира рано или поздно сталкивается с внезапными падениями сервера. Причины могут быть разными: нехватка оперативной памяти, конфликт плагинов, ошибка в сборке или даже внезапное отключение электричества. В такие моменты игроки теряют прогресс, а владелец — нервы. Ручной перезапуск отнимает время, особенно если вы не сидите круглосуточно у консоли. Решение — настроить автоматический мониторинг и перезапуск с помощью простых bash-скриптов и стандартного планировщика cron. Этот подход работает на любом дистрибутиве Linux и не требует специальных знаний программирования.

Представленная ниже инструкция проверена на Ubuntu, CentOS и RHEL, но подойдёт и для других систем. В качестве примера используется сервер Spigot, однако методика универсальна: Vanilla, Bukkit, Paper или даже модифицированные сборки вроде Tekkit запускаются по тому же принципу. Единственное условие — наличие терминала и прав суперпользователя.

Подготовка окружения: установка Screen

Когда вы запускаете Minecraft-сервер в обычной сессии терминала, процесс останавливается сразу после закрытия окна или разрыва SSH-соединения. Чтобы сервер работал в фоновом режиме, мы будем использовать утилиту Screen. Она создаёт виртуальные консоли, которые продолжают жить даже после выхода из системы.

Проверьте, установлен ли Screen:

which screen

Если команда вернула путь (например, /usr/bin/screen), можно переходить к следующему шагу. В противном случае выполните установку:

  • Ubuntu / Debian: sudo apt-get update && sudo apt-get install screen
  • CentOS / RHEL: yum install screen

Теперь утилита готова к работе, и мы можем переходить к созданию скриптов.

Скрипты для автоматического перезапуска

Основная идея — два небольших файла, которые проверяют, жив ли процесс сервера, и при необходимости запускают его заново. Первый скрипт MCServerResetCheck.sh анализирует наличие Java-процесса с нужным именем jar-файла. Если процесс не обнаружен, вызывается второй скрипт start.sh, который стартует сервер внутри сессии Screen.

Скачайте оба файла и поместите их в рабочую директорию сервера — туда же, где лежит ваш spigot-1.11.2.jar (или аналогичный исполняемый файл). В нашем примере это /root/minecraft/. Если вы предпочитаете создавать скрипты вручную, просто скопируйте приведённый ниже код в текстовые файлы с соответствующими именами.

Содержимое MCServerResetCheck.sh

#!/bin/bash
ps aux | grep -v grep | grep spigot-1.11.2.jar
if [ $? -eq 0 ]; then
    echo "Server is running."
else
    echo "$(date): Server is down, restarting..." >> /root/minecraft/MCServerRestartLog.txt
    /root/minecraft/start.sh
fi

Обратите внимание на строку с grep spigot-1.11.2.jar — замените её на имя вашего jar-файла. Путь к лог-файлу тоже можно изменить по желанию.

Содержимое start.sh

#!/bin/bash
cd /root/minecraft
screen -dmS minecraft java -Xmx1g -Xms1g -jar spigot-1.11.2.jar

Здесь ключевой момент — параметры памяти -Xmx1g -Xms1g. Выделите столько оперативной памяти, сколько позволяет ваша система. Имя сессии Screen задано как minecraft — запомните его, оно пригодится для подключения к консоли.

После редактирования сохраните файлы и сделайте их исполняемыми:

chmod +x MCServerResetCheck.sh start.sh

Настройка cron для регулярной проверки

Теперь нужно заставить систему автоматически запускать проверку каждые 30 секунд. Для этого мы воспользуемся cron — классическим планировщиком задач в Linux. Откройте редактор crontab:

service cron stop
crontab -e

Вставьте в конец файла следующие строки, предварительно скорректировав путь к рабочей папке:

* * * * * /root/minecraft/MCServerResetCheck.sh
* * * * * ( sleep 30 ; /root/minecraft/MCServerResetCheck.sh )

Первая строка запускает проверку в начале каждой минуты, вторая — с задержкой в 30 секунд. Таким образом, сервер будет проверяться дважды в минуту. Если такая частота кажется избыточной, можно оставить только одну строку — тогда проверка будет выполняться раз в минуту. Для интервала в две минуты замените первую звёздочку на */2, для трёх — на */3 и так далее вплоть до 59 минут.

Не забудьте перезапустить cron, чтобы изменения вступили в силу:

service cron start

Проверка работоспособности

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

screen -r minecraft

Вы попадёте в консоль Minecraft-сервера. Если вы видите привычный вывод логов — всё в порядке. Выйти из сессии Screen, не останавливая процесс, можно комбинацией Ctrl+A, затем D. Теперь сервер будет перезапускаться автоматически при любом падении.

Кстати, если вы параллельно экспериментируете с модификациями на клиентской стороне, удобно держать под рукой современный лаунчер. Например, через foxygame.net можно быстро установить нужные моды прямо из меню — это экономит время и избавляет от ручного копирования файлов, особенно когда сервер уже использует определённый набор плагинов и требует совместимых клиентских дополнений.

Заключение

Автоматический перезапуск сервера Minecraft на Linux — это не роскошь, а базовая необходимость для стабильной игры. Потратив десять минут на настройку Screen и cron, вы навсегда забудете о ручном вмешательстве после крашей. Приведённые скрипты легко адаптируются под любую версию сервера и любые параметры запуска. Логирование в отдельный файл помогает отслеживать историю падений и анализировать причины сбоев. В результате ваш мир работает бесперебойно, а сообщество игроков остаётся довольно — а это главная цель любого администратора.