07.04.2021, 17:31
(Dieser Beitrag wurde zuletzt bearbeitet: 07.04.2021, 18:00 von Mareta Dagostino.)
Ich habe ein Standalone-Grid und eine Region, also zwei Instanzen von OpenSim auf dem Server. Das sieht dann so aus:
Vermutlich brauchst du nur die Pfade und Namen anpassen.
EDIT:
1) Falls du für ein Grid mehr tun musst als einfach nur OpenSim.exe aufzurufen, musst du 'env LANG=C mono OpenSim.exe' ersetzen durch ein Kommando (innerhalb ' ' ), das alles notwendige fürs Grid tut.
2) Problem: Wenn nur eine Instanz abstürzt, wird nichts neu gestartet, denn es wird ja noch ein OpenSim.exe Prozess von der anderen Instanz gefunden. Bei mir beendet sich OpenSim eh nicht sauber, deshalb habe ich da nicht mehr Aufwand reingesteckt. Ob die jeweilige OpenSim Instanz noch läuft, teste ich mit einem Trigger aus einem Inworld-Script. Wenn der ausbleibt, werden eben mit "killall mono" alle Mono-Instanzen beendet. Für mein Privatgebastel reicht das.
Code:
#!/bin/sh
while :
do
sleep 120
# try both Allegria and Dereos and ignore error if already exists
running=`ps ax | grep OpenSim.exe | grep -v grep`
if [ -z "$running" ]
then
cd /home/mareta/allegria/bin
tmux new-session -d -s term -n Allegria 'env LANG=C mono OpenSim.exe'
cd /home/mareta/dereos/bin
tmux new-window -n Dereos -t term:1 'env LANG=C mono OpenSim.exe'
else
cd /home/mareta/allegria/bin
tmux new-window -n Allegria -t term:0 'env LANG=C mono OpenSim.exe' 2> /dev/null
cd /home/mareta/dereos/bin
tmux new-window -n Dereos -t term:1 'env LANG=C mono OpenSim.exe' 2> /dev/null
fi
done
Vermutlich brauchst du nur die Pfade und Namen anpassen.
EDIT:
1) Falls du für ein Grid mehr tun musst als einfach nur OpenSim.exe aufzurufen, musst du 'env LANG=C mono OpenSim.exe' ersetzen durch ein Kommando (innerhalb ' ' ), das alles notwendige fürs Grid tut.
2) Problem: Wenn nur eine Instanz abstürzt, wird nichts neu gestartet, denn es wird ja noch ein OpenSim.exe Prozess von der anderen Instanz gefunden. Bei mir beendet sich OpenSim eh nicht sauber, deshalb habe ich da nicht mehr Aufwand reingesteckt. Ob die jeweilige OpenSim Instanz noch läuft, teste ich mit einem Trigger aus einem Inworld-Script. Wenn der ausbleibt, werden eben mit "killall mono" alle Mono-Instanzen beendet. Für mein Privatgebastel reicht das.