LINUX: Automatischer Neustart nach Crash

* Tutorials about servers, viewers and simulators
* Anleitungen über Server, Viewer und Simulatoren

LINUX: Automatischer Neustart nach Crash

Beitragvon Lena Vanilli » Sa 24. Okt 2009, 19:35

Translate to English translate to German Translate to French Translate to Italian Translate to Spanish Translate to Portuguese Translate to Czech Перевести на русский язык 翻译成中国

Hallo Metropolitaner,

ein großer Vorteil des OpenSim-Betriebs von Linux ist sicherlich, dass man einen Neustart des RegionsServers automatisieren kann. Für Windows ist mir eine solche Funktion nicht bekannt. :(

Wir benötigen dazu das Programm "screen". Mit "screen" werden virtuelle Fenster geöffnet, die im Hintergrund laufen. Diese Fenster können abgefragt und auch manipuliert werden.

Wenn du nicht weisst, ob screen bei dir installiert ist, gib einfach mal "screen" in der Commandline ein. Wenn nix kommt, is auch nix da. :D

In dem Fall musst du das "screen" installieren. Benutze dazu den Installer deiner Linux-Distribution. z.B. den YaST bei SuSE. Oder aber den Zypper. Das sieht dann wie folgt aus:

Code: Alles auswählen
zypper install screen


Eine sehr schöne Anleitung, was man alles mit dem Screen-Tool anfangen kann, findet sich hier:

http://linuxwiki.de/screen

Wenn das "screen" nun installiert ist, machen wir uns daran, die benötigten Script-Dateien anzulegen. Zunächst legen wir die Script-Datei an, die das screen-Fenster überwachen soll. Nehmen wir einmal an, sie soll "screenwatch" heissen. Legen wir dehalb eine Datei mit diesem Namen im /usr/bin-Verzeichnis an und hinterlegen den folgenden Code:

Code: Alles auswählen
#! /bin/bash

OSDIR="/dein/os-verzeichnis"
ulimit -s 262144

while :
do
    running=`ps ax|grep OpenSim.exe|grep -v grep`
    if [ -z "$running" ]; then
        # The Log Entry
        TIME="OpenSim Down, Restarting: `date +"%A, %B %d - %r"`"
        echo $TIME >>$OSDIR/os.log
        cd $OSDIR/bin
        screen -fa -S OS -d -U -m mono OpenSim.exe -inifile=OpenSim.ini -inimaster=OpenSimLocal.ini -gui=true -noverbose=true
    fi
    sleep 120
done


Die Variable $OSDIR musst du noch an den Namen deines OS-Verzeichnisses anpassen.

Jetzt schreiben wir uns noch ein kleines Script, um unser Wächter-Script aufzurufen und in den Hintergrund zu schicken. Nehmen wir an, dass es "oswatch" heißen soll. Diese Datei im Verzeichnis "/usr/bin" anlegen und folgenden Code hinterlegen:

Code: Alles auswählen
#! /bin/bash
killall -9 screenwatch
killall -9 mono
sleep 5
/usr/bin/screenwatch > /dev/null 2>&1 &


So, jetzt machen wir beide Scripte noch ausführbar:

Code: Alles auswählen
chmod 777 /usr/bin/oswatch
chmod 777 /usr/bin/screenwatch


Jetzt einfach in die CommandLine "oswatch" eingeben und das Wächter-Programm wird automatisch im Hintergrund ausgeführt. Das Wächter-Programm startet OpenSim und überprüft alle 2 Minuten, ob es noch läuft. Falls nicht, wird es sofort wieder gestartet. Das Ganze wird dann im LOG-File "os.log" dokumentiert.

Wenn man nun das OpenSim deleten will, muss man die folgenden Commands eingeben:

Code: Alles auswählen
killall -9 mono
killall -9 screenwatch


Falls du das "screenwatch" nicht löschst, wird das OpenSim immer wieder gestartet. Immer wieder .. und wieder .. und wieder .. :D

Viel Spass beim nicht absturzfreien, aber dafür selbststartenden OpenSim! :)

Gruß
Lena
Alles wird gut!
Benutzeravatar
Lena Vanilli
Administrator
 
Beiträge: 3127
Registriert: Mi 1. Apr 2009, 11:23
Wohnort: Konstanz

Zurück zu Technical Tutorials / Technische Anleitungen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast



Powered by phpBB

Deutsche Übersetzung durch phpBB.de
.

Style designed by Artodia.