Skip to content

Instantly share code, notes, and snippets.

@surtic86
Created April 4, 2011 06:41
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save surtic86/901213 to your computer and use it in GitHub Desktop.
Save surtic86/901213 to your computer and use it in GitHub Desktop.
Minecraft Start / Stop / Update .... Script
#!/bin/bash
# /etc/init.d/minecraft
# Parameter
USERNAME='bukkit'
MCPATH='/opt/minecraft/'
BACKUPPATH='/opt/backup/'
RAM='1G'
FILENAME='craftbukkit-0.0.1-SNAPSHOT.jar'
START="java -Xincgc -Xmx$RAM -jar $FILENAME"
SCREEN='minecraft-01'
COMMAND="$1"
PARAMETER="$@"
ME=`whoami`
DBUSER='bukkit'
DB='bukkit'
# Ausführen als Bennutzer
as_user() {
if [ "$ME" == "$USERNAME" ]
then
bash -c "$1"
else
su - $USERNAME -c "$1"
fi
}
# Server Starten
start() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo 'Server läuft bereits'
else
echo 'Server wird gestartet'
as_user "cd $MCPATH && screen -dmS $SCREEN $START"
sleep 7
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo 'Server läuft nun'
else
echo 'Server konnte nicht gestartet werden'
fi
fi
}
# Server Stopen
stop() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo 'Der Server wird heruntergefahren'
if [ "$COMMAND" == 'stop' ]
then
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say Server wird in 10 Sekunden heruntergefahren.\"\015'"
else
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say Server wird in 10 Sekunden neu gestartet.\"\015'"
fi
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"save-all\"\015'"
sleep 10
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"stop\"\015'"
sleep 20
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo 'Server konnte nicht heruntergefahren werden'
else
echo 'Server ist heruntergefahren'
fi
else
echo 'Der Server läuft nicht'
fi
}
# Server Backup
backup() {
echo "Backup vom Server wird gestartet."
if [ -d $BACKUPPATH/`date '+%Y-%m'` ]
then
echo ''
else
as_user "mkdir $BACKUPPATH/`date '+%Y-%m'`"
fi
if [ -f $BACKUPPATH`date '+%Y-%m'`/`date '+%d-%m-%Y'`.tar.gz ]
then
for i in 1 2 3 4 5 6 7 8 9 10 11 12
do
if [ -f $BACKUPPATH`date '+%Y-%m'`/`date '+%d-%m-%Y'`-$i.tar.gz ]
then
continue
else
sudo mysqldump --opt -u $DBUSER -p $DB > $MCPATH/backup.sql
as_user "cd $BACKUPPATH/`date '+%Y-%m'` && tar -czf `date "+%d-%m-%Y"`-$i.tar.gz $MCPATH"
break
fi
done
else
sudo mysqldump --opt -u $DBUSER -p $DB > $MCPATH/backup.sql
as_user "cd $BACKUPPATH/`date '+%Y-%m'` && tar -czf `date "+%d-%m-%Y"`.tar.gz $MCPATH"
echo "Backed up Minecraft"
fi
echo "Backup vom Server ist Fertig."
}
# Save OFF
saveoff() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo 'Server wird gespeichert'
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say Server wird gespeichert\"\015'"
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"save-off\"\015'"
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"save-all\"\015'"
sync
sleep 10
else
echo 'Server läuft nicht'
fi
}
# Save ON
saveon() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo 'Server wurde gespeichert'
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"save-on\"\015'"
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say Server wurde gespeichert\"\015'"
else
echo 'Server läuft nicht'
fi
}
# Welt Speichern
save() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo 'Welt wird gespeichert'
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say Welt wird gespeichert...\"\015'"
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"save-all\"\015'"
sleep 5
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say Welt wurde gespeichert\"\015'"
else
echo 'Server läuft nicht'
fi
}
# Server Say
say() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo 'Nachricht gesendet'
# String Replace von "say"
MESSAGE=$(echo $PARAMETER|sed 's/say//g')
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say $MESSAGE \"\015'"
else
echo 'Server läuft nicht'
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
backup)
saveoff
backup
saveon
;;
save)
save
;;
say)
say
;;
status)
if ps ax | grep -v grep | grep -v -i SCREEN | grep craftbukkit-0.0.1-SNAPSHOT.jar > /dev/null
then
echo "Server läuft."
else
echo "Server läuft nicht."
fi
;;
*)
echo "Benutzung: service minecraft {start|stop|restart|save|backup|say|status}"
exit 1
;;
esac
exit 0
@banana-joe0815
Copy link

Hi,

danke für das klasse Script.
In Zeile 192 solltest du craftbukkit-0.0.1-SNAPSHOT.jar durch $FILENAME ersetzen.

Gruß
Banana-Joe

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment