Ярлык сервера Minecraft
Я новичок здесь, и я не мог найти это где-нибудь еще. Я хотел написать быстрый скрипт bash, чтобы я мог перестать копировать / вставлять следующий код на мой Linux-сервер.
screen -S MineCraft -d -m java -Xincgc -Xmx1G -jar craftbukkit-0.0.1-SNAPSHOT.jar
Я хочу быть в состоянии набрать простую команду, которая будет запускать вышеупомянутую команду, IE: Minecraft или что-то в этом роде.
3 ответа
Это сценарий оболочки, который я написал для моего сервера Minecraft.
сохранить как start.sh
и позвони с ./start.sh start
Вы также можете вызвать резервную копию, которая создает резервную копию, пока сервер еще может работать. Эта резервная копия может быть восстановлена позже.
Не забудьте изменить craftbukkit.jar
во что бы то ни было, ваш файл JAR.
#!/bin/bash
# Made by bytecode77
##############################################################
DIRECTORY='/home/minecraft'
SESSIONNAME='minecraftserverscreen'
JARFILE='craftbukkit.jar'
WORLDNAME='world'
NETHERNAME='world_nether'
SKYNAME='world_skylands'
ENDNAME='world_the_end'
##############################################################
start()
{
SCREENID=$(screen -ls | grep -w $SESSIONNAME | cut -f 2)
if [ $SCREENID ]; then
echo "Minecraft is already running."
else
echo "Starting Minecraft server..."
screen -dmS $SESSIONNAME java -Xms768M -Xmx768M -jar $JARFILE nogui
fi
}
stop()
{
SCREENID=$(screen -ls | grep -w $SESSIONNAME | cut -f 2)
if [ $SCREENID ]; then
echo "Stopping Minecraft server..."
screen -S $SESSIONNAME -p 0 -X stuff "`printf "stop\r"`"
while screen -ls | grep $SESSIONNAME > /dev/null
do
sleep 0.1
done
else
echo "Minecraft is not running."
fi
}
restart()
{
echo "Restarting Minecraft server..."
stop > /dev/null && start > /dev/null
}
saveoff()
{
screen -S $SESSIONNAME -p 0 -X eval 'stuff "say Starting backup..."\015'
screen -S $SESSIONNAME -p 0 -X eval 'stuff "save-off"\015'
screen -S $SESSIONNAME -p 0 -X eval 'stuff "save-all"\015'
sync
}
saveon()
{
screen -S $SESSIONNAME -p 0 -X eval 'stuff "save-on"\015'
screen -S $SESSIONNAME -p 0 -X eval 'stuff "say Backup complete."\015'
}
backup()
{
echo "Creating backup of '$WORLDNAME', '$NETHERNAME', '$SKYNAME' and '$ENDNAME'..."
saveoff
sleep 5
mkdir -p backups
tar cfv "backups/NEW.tar" $WORLDNAME $NETHERNAME $SKYNAME $ENDNAME > /dev/null
mv "backups/NEW.tar" "backups/$(date +"%m-%d-%Y_%H.%M.%S").tar"
saveon
}
restore()
{
echo "Restoring '$WORLDNAME', '$NETHERNAME', '$SKYNAME' and '$ENDNAME'..."
stop > /dev/null
rm -r $WORLDNAME
rm -r $NETHERNAME
rm -r $SKYNAME
rm -r $ENDNAME
tar xfv "backups/$(ls backups -t | head -1 | grep ".tar")" > /dev/null
start > /dev/null
}
cd $DIRECTORY
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
backup)
backup
;;
restore)
restore
;;
*)
echo "Usage: ${0} {start|stop|restart|backup|restore}"
exit 2
esac
exit 0
Первый:
$ nano runMinecraft
Введите это в:
#!/bin/bash
screen -S MineCraft -d -m java -Xincgc -Xmx1G -jar craftbukkit-0.0.1-SNAPSHOT.jar`
Сохраните это, напечатайте это в:
$ chmod +X runMinecraft
Затем, чтобы запустить Minecraft, просто наберите:
$ ./runMinecraft
Вы также можете скопировать runMinecraft
в /usr/bin/
так что вам не нужно вводить ./
каждый раз, когда вы запускаете его.
Если у вас есть ~/.profile
а также ~/.bash_aliases
файлы, добавьте псевдоним ~/.bash_aliases
(man alias
для дополнительной информации)
В качестве альтернативы (также зависит от ~/.profile
) добавить исполняемый скрипт bash в ~/bin
с правильным шебаном (#!/bin/bash
) и оно тоже должно бежать.
Если файлы отсутствуют, скопируйте их из /etc/skel
cd /etc/skel
cp .profile .bash_aliases ~
echo 'alias minecraft="screen -S MineCraft -d -m java -Xincgc -Xmx1G -jar craftbukkit-0.0.1-SNAPSHOT.jar"' | tee -a ~/.bash_aliases
перелог и это должно работать