#!/bin/bash
# /etc/init.d/minecraft
# version 0.3.2 2011-01-27 (YYYY-MM-DD)
 
### BEGIN INIT INFO
# Provides:  minecraft
# Required-Start: $local_fs $remote_fs
# Required-Stop:  $local_fs $remote_fs
# Should-Start:  $network
# Should-Stop:    $network
# Default-Start:  2 3 4 5
# Default-Stop:  0 1 6
# Short-Description:    Minecraft server
# Description:    Starts the minecraft server
### END INIT INFO
 
#Settings
SERVICE='minecraft_server.jar'
USERNAME="loginuser"
MCPATH='/home/loginuser/minecraft'
CPU_COUNT=4
INVOCATION="java -Xmx2048M -Xms2048M -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts -jar minecraft_server.jar nogui"
BACKUPPATH='/home/loginuser/minecraft/backup'
 
ME=`whoami`
as_user() {
  if [ $ME == $USERNAME ] ; then
    bash -c "$1"
  else
    su - $USERNAME -c "$1"
  fi
}
 
mc_start() {
  if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  then
    echo "Tried to start but $SERVICE was already running!"
  else
    echo "$SERVICE was not running... starting."
    cd $MCPATH
    as_user "cd $MCPATH && screen -dmS minecraft $INVOCATION"
    sleep 7
    if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
    then
      echo "$SERVICE is now running."
    else
      echo "Could not start $SERVICE."
    fi
  fi
}
 
mc_saveoff() {
        if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
        then
                echo "$SERVICE is running... suspending saves"
                as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'"
                as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-off\"\015'"
                as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
                sync
                sleep 10
        else
                echo "$SERVICE was not running. Not suspending saves."
        fi
}
 
mc_saveon() {
        if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
        then
                echo "$SERVICE is running... re-enabling saves"
                as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-on\"\015'"
                as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'"
        else
                echo "$SERVICE was not running. Not resuming saves."
        fi
}
 
mc_stop() {
        if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
        then
                echo "$SERVICE is running... stopping."
                as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'"
                as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
                sleep 10
                as_user "screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015'"
                sleep 7
        else
                echo "$SERVICE was not running."
        fi
        if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
        then
                echo "$SERVICE could not be shut down... still running."
        else
                echo "$SERVICE is shut down."
        fi
}
 
 
#Start-Stop here
case "$1" in
  start)
    mc_start
    ;;
  stop)
    mc_stop
    ;;
  restart)
    mc_stop
    mc_start
    ;;
  status)
    if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
    then
      echo "$SERVICE is running."
    else
      echo "$SERVICE is not running."
    fi
    ;;
 
  *)
  echo "Usage: /etc/init.d/minecraft {start|stop|update|backup|status|restart}"
  exit 1
  ;;
esac
 
exit 0
Minecraft-Server automatisch aktualisieren
Inhaltsverzeichnis
Einrichtung eines init-Scripts
Zunächst fügen wir ein init-Script hinzu, damit wird Minecraft bequem starten und stoppen können. Dazu editieren wir die neue Datei „/etc/init.d/minecraft“ und fügen folgenden Inhalt ein:
Hierbei können wir die notwendigen Zeilen an die eigenen Gegebenheiten anpassen, die beispielsweise angeben, an welcher Stelle Minecraft entpackt wurde. In meinem Fall betreibe ich Minecraft im Verzeichnis „/home/loginuser/minecraft„, die auszuführende Datei heißt „minecraft_server.jar“ und der Nutzer, unter welchem der Minecraft-Server läuft heißt „loginuser„.
wget installieren
Für unser Script benötigen wir das Programm „wget“ dass wir wie folgt installieren:
Update-Script
Im Anschluss erstellen wir eine neue Datei, beispielsweise mit
und fügen folgendes Script ein:
Dem Script erlauben wir die Ausführung mit
und erstellen einen neuen Crontab, damit das Script regelmäßig ausgeführt wird.
Cronjob erstellen
Den Crontab-Editor öffnen wir immer mit
wobei wir beim ersten Start nach unserem favorisierten Editor gefragt werden. „nano“ ist hier zunächst eine gute Wahl.
Anschließend fügen wir folgende Zeile ein:
Nach dem Speichern und Schließen der Crontabs wird nun das Update-Script stündlich ausgeführt. Zu beachten ist dabei, dass der Client ebenfalls über die neuste Snapshot-Version verfügt und für die Installation von Snapshots konfiguriert wurde.
Übersicht der Versionen
Die jeweils aktuellste Version von Minecraft ist auf dieser Seite sehr übersichtlich gelistet: https://mcversions.net
Verwandte Beiträge
Kann man einen V-Server oder einen dedizierten Server in einem Rechenzentrum sein Eigen nennen, bietet…
Unser bisheriger Tintenstrahldrucker ist in die Jahre gekommen und gab irgendwann gänzlich den Geist auf.…
Seit einigen Version von Windows Server ist es möglich, NFS-Dateifreigaben einzurichten, welche dann unter vielen Linux-Distributionen…
In vielerlei Hinsicht ist es wichtig,dass Netzwerkgeräte und Server über die gleiche Uhrzeit verfügen. Aufgrund…
Manche Vorgänge am Raspberry Pi führen wir immer und immer wieder durch. Daher möchte ich…