Skip to content

Instantly share code, notes, and snippets.

@NoTimeForHero
Last active June 6, 2018 23:03
Show Gist options
  • Save NoTimeForHero/589de47cc89ab66492ff to your computer and use it in GitHub Desktop.
Save NoTimeForHero/589de47cc89ab66492ff to your computer and use it in GitHub Desktop.
#!/bin/bash
DIR="/home/minecraft/mc-$1/"
SCR="mc-$1"
MAX_STOP=10
if [[ "$1" == "s1" ]] ; then
memory=12288
else
memory=8192
fi
if [[ `id -u` -ne 0 ]] ; then
echo -e "[\033[31mОшибка\033[0m] Вы должны быть суперпользователем для запуска сервера! (\033[33msudo su\033[0m)"
exit
fi
if [[ "$1" == "" ]] ; then
echo -e "\033[32mФормат запуска: \033[33mmcpanel <server> (start|stop|status|kill)\033[0m!"
exit
fi
if [[ "$2" == "" ]] ; then
echo -e "[\033[33mВнимание!\033[0m] Выберите действие для сервера \033[33m(start|stop|status|\033[31mkill\033[33m)\033[0m"
exit
fi
INSTANCES=`ps aux | grep "$SCR" | grep java | grep -v 'grep' | wc -l`
# START BLOCK
if [[ "$2" == "start" ]] ; then
if [[ "$INSTANCES" -eq 0 ]] ; then
if [ -d "$DIR" ] ; then
cd "$DIR"
echo -e "[\033[32mУспешно\033[0m] Папка сервера существует, переходим в неё: \033[33m$DIR\033[0m"
else
echo -e "[\033[31mОшибка\033[0m] Папки для запуска сервера не существует: \033[33m$DIR\033[0m"
exit
fi
screen -AmdSU mc-$1 java -Xmx$memory"M" -jar Bukkit.jar
echo -e "[\033[32mУспешно\033[0m] Процесс сервера был успешно запущен!"
else
echo -e "[\033[33mВнимание\033[0m] Сервер уже запущен. Используйте параметр \033[33mrestart\033[0m для перезагрузки сервера"
fi
fi
# INFO BLOCK
if [[ "$2" == "status" ]] ; then
echo -e "[\033[36mИнформация\033[0m] Запущено экземпляров сервера - \033[31m$INSTANCES\033[0m!"
if [[ "$INSTANCES" -eq 1 ]] ; then
echo -e "[\033[36mИнформация\033[0m] Сервер на данный момент \033[32mвключён\033[0m!"
else
echo -e "[\033[36mИнформация\033[0m] Сервер на данный момент \033[31mвыключён\033[0m!"
fi
fi
# KILL BLOCK
if [[ "$2" == "kill" ]] ; then
echo -e "[\033[33mВнимание\033[0m] Производится убийство процесса сервера \033[33m$SCR\033[0m, данное действие может привести за собой полную потерю данных."
if [[ "$INSTANCES" -ge 1 ]] ; then
ps aux | grep "$SCR" | head -n -1 | awk '{print $2}' | xargs kill -9
screen -wipe > /dev/null
echo -e "[\033[32mУспешно\033[0m] Процесс сервера был успешно убит"
else
echo -e "[\033[31mОшибка\033[0m] Сервер не запущен!"
fi
fi
# STOP BLOCK
if [[ "$2" == "stop" ]] ; then
if [[ "$INSTANCES" -gt 1 ]] ; then
echo -e "[\033[31mОшибка\033[0m] Невозможно остановить сервер! Запущено больше одного процесса сервера!"
exit
fi
if [[ "$INSTANCES" -eq 0 ]] ; then
echo -e "[\033[31mОшибка\033[0m] Сервер уже выключен!"
exit
fi
echo -e "[\033[33mВнимание\033[0m] Производится сохранение данных на сервере \033[33m$SCR\033[0m путём выполнения \033[33msave-all\033[0m"
screen -S $SCR -X stuff "save-all `echo -ne '\015'`"
sleep 3
echo -e "[\033[33mВнимание\033[0m] Производится остановка сервера через \033[33mstop\033[0m"
screen -S $SCR -X stuff "stop `echo -ne '\015'`"
for i in {1..10} ; do
if [[ `ps aux | grep "$SCR" | grep java | grep -v 'grep' | wc -l` -eq 0 ]] ; then
echo -e "[\033[32mУспешно\033[0m] Сервер успешно остановлен через \033[31m$i\033[0m секунд(ы/у)"
exit
fi
sleep 1
done
echo -e "[\033[31mОшибка\033[0m] Не удалось остановить сервер за \033[31m$MAX_STOP\033[0m секунд!"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment