Minecraft-Server mit Screen steuern

Das man Minecraft-Server via

screen -dmS meinserver java -jar minecraft-server.jar -Xmx1G

in den Hintergrund starten lassen, man dann via

screen -r meinserver

wieder in die Minecraft-Konsole gelangt und zuletzt mit dem Tastenkürzel Ctrl+A, D die Minecraft-Konsole wieder verlässt sollte ein alter Hut sein.

Ich möchte hier vorstellen, wie man einfache Befehle (zB für Backups) auch ausführen kann ohne in die Mc-Konsole wechseln zu müssen. Diese Variante funktioniert mit allen gängigen Minecraft-Servern, wie z.B. Bukkit.

Im laufe des Artikels wird ein Bash-Steuerscript erstellt, welches dazu dient Befehle direkt ausführen zu können und dann ein simples Backups-Script erstellt welches das Steuerscript nutzt.

Fangen wir also an, zunächst schreiben wir uns das Grundgerüst des Steuerscriptes:

#!/bin/bash
 
# der Dateiname der Server-Jar, darf auch ein absoluter Pfad sein
SERVER_NAME="minecraft_server.jar"
 
# der Name der Screen-Session die Erstellt und verwaltet wird
SCREEN_NAME="meinserver"
 
if [ $# -gt 0]; then
    case $1 in
    "start")
        ;;
    "stop")
        ;;
    "restart")
        ;;
    "save-off")
        ;;
    "save-on")
        ;;
    "save-all")
        ;;
    "say")
        ;;
    "--help")
        ;;
    esac;
else
    $0 --help;
fi;

Nun kann man schon grob erahnen wo das ganze hin führen wird. Wir werden in der Lage sein, den Server von der normalen Linux-Konsole aus zu stoppen, zu starten, neu zu starten, die Welt zu speichern und etwas als [SERVER] zu sagen. Des weiteren schreiben wir uns auch eine Hilfe, damit wir nicht vergessen wie das Script zu bedienen sein wird.

Zunächst schreiben wir uns eine Helfs-Funktion, welche einen Befehl ausführt:

mc_cmd() {
       screen -S $SCREEN_NAME -p 0 -X stuff "`printf "$*\r"`";
}

Die Bereiche Start, Stop und Restart werden um die folgenden Zeilen ergänzt:

        "start")
                echo -n "Starting minecraft... ";
                screen -dmS $SCREEN_NAME java -Xmx1536M -Xms64M -jar $SERVER_NAME && echo "OK";
                ;;
        "stop")
                say "Stoppe in 5 Sekunden.";
                sleep 5;
                echo -n "Stopping minecraft... ";
                mc_cmd stop && echo "OK";
                ;;
        "restart")
                $0 stop;
                sleep 5;
                $0 start;
                ;;

Zusätzlich bauen wir noch wrapper für save und say ein:

        "save-off")
                mc_cmd save-off && echo "save-oFF.";
                ;;
        "save-on")
                mc_cmd save-on && echo "save-oN.";
                ;;
        "save-all")
                mc_cmd save-all && echo "save-ALL.";
                ;;
        "say")
                say $2;
                ;;

Zum Schluss die Hilfe:

        "--help")
                echo "Usage: ./run.sh <Command> [<Options>]";
                echo "";
                echo "Available commands are:";
                echo "  start          Starts the server.";
                echo "  stop           Stops the server.";
                echo "  restart        Restarts the server.";
                echo "  save-off       Turns level saving off.";
                echo "  save-on        Turns level saving on.";
                echo "  save-all       Saves the level.";
                echo "  say <msg>      Prints <msg> to the game chat.";
                ;;

Nun das Backup-Script, welche den Ordner “world” in einen Tarball mit Timestamp packt. Das Script von oben wird unter ./run.sh aufgerufen.

#!/bin/bash
./run.sh say "[BACKUP] Starte. Speichere Welt...";
./run.sh save-off;
./run.sh save-all;
cp -R world bak_tmp && ./run.sh say "[BACKUP] Gespeichert, komprimiere ...";
./run.sh save-on;
nice -n +5 tar -cf - bak_tmp | nice -n +5 gzip -9 - > world-$(date "+%d-%m-%Y_%H-%M").tar.gz;
rm -R bak_tmp;
./run.sh say "[BACKUP] Alles Fertig.";

Nicht vergessen, beiden Scripten ausführungsrechte zu geben (via chmod u+x scriptname.sh). Dann Spaß beim Minecraft-Fernsteuern haben!

Wer rausfindet, wie man prüft ob eine Screen-Sitzung noch läuft darf das gerne in die Kommentare schreiben!

reniced

Habe heute ein einfaches script geschrieben, welches laufende Prozesse auf Linux-Systemen anhand von Suchmustern mit einer neuen Priorität versieht. Das ganze ist vorallem dann nützlich wenn man Prozessen eine  Priorität zuweisen will, welche sich nicht ohne weiteres direkt mit einer speziellen Priorität starten lassen.

Folgenden code einfach in eine neue Datei “reniced” speichern:

#!/bin/sh
pattern="convert|mogrify|bzip2|pigz|gzip";
while [ true ]; do
 for arg in `ps -A | egrep -e $pattern | grep -v grep | cut -c 1-5`; 
  do
  echo "Reniceing $arg";
  renice -n +5 $arg;
 done;
 sleep 1;
done;

Einfach per [sudo] ./reniced > reniced.log & starten und alle im Suchmuster per “|” separierten Prozesse bekommen die neue Priorität aus Zeile 7.

Der Schlaf-Wert in Zeile 9 kann ebenfalls je nach bedarf justiert werden, je nach dem wie schnell man auf neue zutreffende Prozesse reagieren möchte. Wer’s ganz schnell haben will kann auch usleep verwenden.

Adaptec 2420SA Status unter Debian oder Ubuntu auslesen.

Nachdem man erfolgreich Debian oder Ubuntu auf seinem Server installiert hat, möchte man womöglich den RAID Status seines Adaptec RAID Controllers auslesen. Nunja, Adaptec supportet nur RHEL, Fedora und SuSE, also muss man ein wenig tricksen.

Die folgenden Kommandos sind der Weg zum Erfolg!

sudo su - # wir wollen schnell arbeiten, unter Debain einfach nur su -
apt-get update
apt-get install alien libstdc++5 -y
wget http://download.adaptec.com/raid/storage_manager/asm_linux_x64_v5_20_17414.rpm
alien --scripts asm_linux_x64_v5_20_17414.rpm
 
# <ARCH> = Systemarchitektur, zB amd64, TAB hilft ;)
dpkg -i storman_5.20-1_<ARCH>.deb 
 
# arcconf binary in ein normales Verzeichnis linken
ln -s /usr/StorMan/arcconf /usr/bin/arcconf

Wenn alles erfolgreich passiert ist, kann man daten wie folgt auslesen:

arcconf GETCONFIG 1

Gibt eine ausführliche übersicht über die verbauten Komponenten und deren Status aus.

arcconf GETSTATUS 1

Gibt eine rückmeldung über aktuelle vorgänge des Festplattenverbundes und deren fortschritt (z.B.: Rebuild 50%)

Den mit installierten StorMan kann man auf servern wegen der fehlenden Desktopumgebung leider nicht verwenden. (Bei einer Desktopumgebung via VNC (o.ä.) wäre dies allerdings möglich.)

Viel erfolg!

Need for Speed World Online Beta – Erster Eindruck

Need for Speed World Beta Gameplay Screenshot

Spielansicht

Habe mir heute die aktuelle Beta von NfSW runtergeladen und angespielt.

An und für sich ist es ein normales Rollenspiel wo man fährt anstatt zu laufen. Quests gibt es nicht, aber Rennen die man so oft man will wiederholen kann (so ähnlich wie Dauerquests) und so seine Erfahrungspunkte sammeln kann für Levelup. Carbon und Most Wanted Spieler werden sich im World Online Straßennetz sicherlich schnell zurecht finden da ganze Stadtteile scheinbar unverändert übernommen wurden.

Das Spiel ruckelt und muckelt wegen der permanenten Internetnutzung ununterbrochen vor sich her und man kann sich somit mit etwas Glück durch Hindernisse “hindurchlaggen”.

Auch die Polizei ist wie in den Vorgängerspielen noch vorhanden, wird aber erst bei viel zu schnellem Fahren und energischen Rammen der Polizeifahrzeuge aktiv. Während der Polizeiverfolgung werden die MMO-Features ausgeschaltet und man kann ruckelfrei und ungehindert der Poliezi davonfahren.

Kollisionen gibt es nur bei Objekten und KI-Autos (welche übrigens zufällig spawnen und verschwinden, manchmal auch direkt vor einem). Durch Online-Mitspieler fährt man in der freien Fahrt einfach hindurch, nicht allerdings bei Rennen.

Neu eingeführt sind die Powerups die einem helfen sollen der Polizei zu entkommen oder Renngegner aus dem Weg zu schaffen. Leider kann man diese nur begrenzt oft ausführen und muss jedes weitere Mal prepaid vorkaufen.

Die Grafik sieht soweit ganz gut aus, lediglich Filter wie Antialiasing und Tiefenschärfe fehlen noch und zwischen den einzelnen Detailstufen erkennt man nicht viel Unterschiede.

Eigentlich wollte ich hier noch ein Demovideo posten, was sich aber durch einen BSoD beim Aufnehmen erledigt hat.

EA Customer Support FAIL

Heute wollte ich mal die FIFA Online Beta ausprobieren, was natürlich schief ging. In guten Absichten hinterlies ich bei Electronic Arts einen Bugreport auf der dafür vorgesehenen Seite.

Aber allem Anschein nach werden Bugreports von EA nicht ganz ernst genommen, denn ich erhielt eine Antwort ohne jeglichen Bezug zu meinem Report … Anscheinend eine standardisierte Nachricht …

Customer Support EPIC FAIL

And now especially for our friends from EA in english :)

Could you please at least read the reports, beta participants post to you, instead of givin’ a sh*t!? Damn, that s*cks!

Debian Paketmanager Fail

Als täte apt-get nicht genügen bringt es auch gleich aptitude mit und wenn der eine Admin mit apt-get Gnome installiert, dann kommt gewiss der nächste und installiert per aptitude Git und Gnome ist wieder weg; weil Admin #2 zudem zu faul ist zu lesen und die Warnung, dass 120 Pakete entfernt werden, einfach überspringt.

[sudo] chmod a-x /usr/sbin/aptitude

CeBit 2010

Ja, auch dieses Jahr war ich (am 6.3.2010) wieder auf der CeBIT in Hannover. Anstatt der üblichen Begleitung fuhr ich dieses Jahr alleine und traf mich vor Ort dann mit meinem Clan, was die diesjährige CeBIT zu einem eher unterhaltsamen und lustigen, als informativ futuristischen, Ausflug machte.

Im folgenden erklärt sich dann auch warum es dieses Mal keine Fotos von niegel nagel neuer Technologie gibt; Es gab einfach nichts neues. In meinen Augen hat sich sogar einiges zurückentwickelt. Letztes Jahr noch zeigte IBM diese leuchtenden Kugeln um Cloud Computing darzustellen, dieses Jahr waren es nurnoch zwei Flatscreens welche einen bunten unscharfen LSD-Trip anzeigten und auf einer genau so bunten und nutzlosen Scheibe auf und ab fuhren.

Wie man im vorraus schon hörte, waren die Hallen der asiatischen Hardwarehersteller annektiertes Gebiet welche eine für ostasiatische Verhältnisse angemessene Bevölkerungsdichte aufwiesen. Zu sehen gab es aber auch dort nur den selben Kram wie letztes Jahr – lediglich hier und da verbessert.

Die neue Halle der Intel Extreme Masters, welche zum leid einiger meiner Clanmates erst ab 16 Jahren zu betreten war, hätte man sich sparen können. Harter Techno, auf großem grauen Teppichboden hockende Menschen, welche acht Bildschirme auf einer Bühne betrachten auf denen ein Intel-Logo und andere Werbung zu sehen war, sowie auf der Bühne an PCs sitzende (wahrscheinlich) Spieler, welche wiederrum aßen und tranken aber nicht spielten. Komischerweise fanden die meisten dort Anwesenden die Verzehrvorführung der anwesenden ESL-Spieler faszinierend und befanden sich geradezu in Extase. Ich war nach einer Minute wieder draußen.

CeBIT Sound – so nannte sich ein weiterer neuzugang der Ausstellungen, in dem es im linken Hallendrittel darum ging Menschen auf einer Bühne zuzuschauen wie sie Geräte zur Soundaufname und -wiedergabe ausprobierten. Im mittleren Hallendrittel konnten kleine Kinder E-Drums ausprobieren und die Sau rauslassen und im rechten Hallendrittel durfte man Netzwerk- (z.B. Warcraft3) und 3D-Spiele (z.B. Avatar) spielen und sich mit anderen Messebesuchern messen. Was das allerdings mit Sound zu tun hatte wusste niemand.

An Werbegeschenken mangelte es genauso wie an Neuerungen – Nach 3 Einhalb Stunden CeBIT nur eine 30-Tage Testversion von Kasperskys Antivirenlösung ist erbärmlich. Ein Brötchen im CeBIT-Bistro für fast 4 Euro genauso unerhört.

Hoffentlich wird es nächstes Jahr wieder besser, wenn “Push your Business” bei den meisten durch diese CeBIT funktioniert hat. Vorraussichtlich bin ich dann auch wieder mit meinem Clan vor Ort.

Doenemeier.de Software

So, da ich jetzt ja schon mehrere Applikationen (Für Web, sowie Desktop) gebaut habe, dachte ich ich bereite dafür mal nach und nach einen eigenen Bereich auf Doenemeier.de. Aktuell ist das ganze noch ziemlich trocken und bietet nur eine Überschrift sowie einfache Projektbrowser.

Auf diesen Seiten werde ich zukünftig aber auch meine Produkte präsentieren und zum Download anbieten. Hier schonmal der Link: