Это сценарий оболочки, который я написал для моего сервера 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