Last active
June 6, 2018 23:03
-
-
Save NoTimeForHero/589de47cc89ab66492ff to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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