Automating Tasks/fr

From OpenSimulator

Jump to: navigation, search

Contents

Démarrage automatisé de la grille

Linux/Mac OS X

Voir

Scripts de base

  • Utiliser la commande Screen

Utilisez la commande screen pour automatiser le démarrage

  • Commande d'installation de Screen et création de fichier shell

Installation Linux :

Ubuntu

apt install screen 

Archlinux

pacman -S screen 

Mac OS X: Téléchargez soit MacPorts, http://www.macports.org/, soit Fink, http://www.finkproject.org/ pour télécharger les paquets *nix MacPorts

sudo port install screen

Fink

  • Créer le fichier runsim.sh
#!/bin/sh
cd opensim/bin
screen -S Robust -d -m  mono OpenSim.Robust.exe
sleep 10
screen -S OpenSimulator -d -m mono OpenSim.exe -gridmode=true

Voir aussi --> Smart Prestart LINUX

  • Scripts Bash:
    • Démarrez plusieurs instances et sauvegardez les fichiers critiques avant le démarrage.
    • Arrêt automatique de plusieurs instances avec un avertissement préalable de 2 minutes aux utilisateurs dans le monde.
    • NB Ce modèle de commande peut être également utilisé pour lancer d'autres fonctions dans la Console d'OpenSimulator.

Démarrage et accès aux serveurs

./runsim.sh

Si vous avez des problèmes d'autorisation

chmod 755 runsim.sh

Pour voir la liste des serveurs dans screen :

screen -ls 

ou

screen -list

La sortie ressemblera à ce qui suit :

There are screens on:
     8419.OpenSim  (Detached)
     8403.Robust  (Detached)

Pour accéder au serveur

screen -r 8419.OpenSim
screen -r 8403.Robust

Pour quitter l'écran, en laissant le serveur en marche, et pour revenir au shell

ctrl-a d

osstart.sh

exemple: osstart.sh OpenSim

(Nom du répertoire = nom du screen)

Exemples concrets :

/opt/osstart.sh sim1

/opt/osstart.sh sim2

/opt/osstart.sh sim3

/opt/osstart.sh sim...

#!/bin/bash
sleep 3
if [ -d $1 ]; then
  echo "$(tput setaf 4)OpenSim: $(tput setab 7)$1 Start$(tput sgr 0)"
  cd /opt/$1/bin
  screen -fa -S $1 -d -U -m mono OpenSim.exe
else
  echo "$(tput setaf 2)The following screens were started$(tput sgr 0)"
  screen -ls
   exit 1
fi

osgridstart.sh

#!/bin/bash
sleep 3
robust="/opt/robust/"
if [ -d "$robust" ]; then
  # Take action if $robust exists. #
  echo "$(tput setaf 4)OpenSim: $(tput setab 3)RobustServer Start$(tput sgr 0)"
  cd /opt/robust/bin
  screen -fa -S RO -d -U -m mono Robust.exe
else
  echo "$(tput setaf 2)The following screens were started $(tput sgr 0)RO $(tput setaf 2)and $(tput sgr 0)OS$(tput setaf 2).$(tput sgr 0)"
  screen -ls
   exit 1
fi
sleep 10
money="/opt/robust/"
if [ -d "$money" ]; then
  # Take action if $robust exists. #
  echo "$(tput setaf 4)OpenSim: $(tput setab 3)MoneyServer Start$(tput sgr 0)"
  cd /opt/robust/bin
  screen -fa -S MO -d -U -m mono MoneyServer.exe
else
  echo "$(tput setaf 2)The following screens were started $(tput sgr 0)RO $(tput setaf 2)and $(tput sgr 0)OS$(tput setaf 2).$(tput sgr 0)"
  screen -ls
   exit 1
fi
cd /opt
# echo " Wait 40 seconds and then start regions."
sleep 40
echo "$(tput setaf 2)OpenSim: $(tput setab 0)Welcome Region start$(tput sgr 0)"
/opt/osstart.sh sim1
echo "$(tput setaf 2)OpenSim: $(tput setab 0)Start all other regions$(tput sgr 0)"
/opt/osstart.sh sim2
/opt/osstart.sh sim3
/opt/osstart.sh sim4
/opt/osstart.sh sim5
/opt/osstart.sh sim6
/opt/osstart.sh sim7
/opt/osstart.sh sim8
/opt/osstart.sh sim9
/opt/osstart.sh sim10
echo "$(tput setaf 2)List started screens$(tput sgr 0)"
screen -ls

Arrêter les serveurs

Soit accéder manuellement à chaque écran

screen -r 8419.OpenSim
shutdown

ou

screen -S OpenSim -p 0 -X eval "stuff 'shutdown'^M"

Ou utiliser (uniquement en cas de crash !)

killall screen

Ou

for i in `ps afxu | grep -i "mono.*OpenSim" | grep -v grep | awk {'print $2'}`; do kill $i; done

Ou pour arrêter chaque session proprement, faites un script d'arrêt, stopgrid.sh

#!/bin/bash
screen -S Robust -X quit
sleep 10
screen -S OpenSim -X quit

osstop.sh

exemple: osstop.sh OpenSim

(Nom du répertoire = nom du screen)

exemples concrets :

/opt/osstop.sh sim1

/opt/osstop.sh sim2

/opt/osstop.sh sim...

#!/bin/bash
sleep 10
if screen -list | grep -q $1; then
  echo "$(tput setaf 1)OpenSim: $(tput setab 7)Regionen OpenSimulator $1 Beenden$(tput sgr 0)"
  screen -S $1 -p 0 -X eval "stuff 'shutdown'^M"
else
  echo "$(tput setaf 1)OpenSim: $(tput setab 7)Regionen OpenSimulator $1 nicht vorhanden$(tput sgr 0)"
fi


osgridstop.sh

#!/bin/bash
sleep 3
echo "$(tput setaf 1)OpenSim: $(tput setab 6)Stop regions$(tput sgr 0)"
/opt/osstop.sh sim2
/opt/osstop.sh sim3
/opt/osstop.sh sim4
/opt/osstop.sh sim5
/opt/osstop.sh sim6
/opt/osstop.sh sim7
/opt/osstop.sh sim8
/opt/osstop.sh sim9
/opt/osstop.sh sim10
sleep 30
echo "$(tput setaf 1)OpenSim: $(tput setab 6)Stop the Welcome Region$(tput sgr 0)"
/opt/osstop.sh sim1
if screen -list | grep -q "MO"; then
  echo "$(tput setaf 1)OpenSim: $(tput setab 3)Exit MoneyServer$(tput sgr 0)"
  screen -S MO -p 0 -X eval "stuff 'shutdown'^M"
else
  echo "$(tput setaf 1)OpenSim: $(tput setab 3)MoneyServer does not exist$(tput sgr 0)"
fi
sleep 30
if screen -list | grep -q "RO"; then
  echo "$(tput setaf 1)OpenSim: $(tput setab 3)Exit RobustServer$(tput sgr 0)"
  screen -S RO -p 0 -X eval "stuff 'shutdown'^M"
else
  echo "$(tput setaf 1)OpenSim: $(tput setab 3)RobustServer does not exist$(tput sgr 0)"
fi
sleep 30
echo " List screens"
screen -ls
echo "$(tput setaf 1)$(tput setab 7)Wait 60 seconds and then kill all open screens$(tput sgr 0)"
sleep 60
killall screen

oslogdel.sh

supprime les fichiers journaux (malheureusement les fichiers journaux deviennent insupportablement gros).

exemple: oslogdel.sh OpenSim

Exemples concrets:

/opt/oslogdel.sh robust

/opt/oslogdel.sh sim1

/opt/oslogdel.sh sim2

/opt/oslogdel.sh sim...

#!/bin/bash
sleep 3
cd /opt
if [ -d $1 ]; then
  echo "$(tput setaf 1)OpenSim: $(tput setab 7)log $1 deleted$(tput sgr 0)"
  cd /opt/$1/bin
  # echo "/opt/$1/bin"
  rm *.log
else
  echo "$(tput setaf 1)logs not found $(tput sgr 0)"
  exit 1
fi

Surveillance du simulateur

Surveille le processus du simulateur sous Linux

L'ajout d'une entrée à la ligne de commande pour appeler un simple script pour vérifier la table des processus peut redémarrer les régions qui se plantent . Ici User_talk:BlueWall est un script pour accomplir ceci avec un exemple d'entrée cron pour des intervalles d'une minute. Même si cela ne résoudra pas 100% des crashs, cela les résoudra la plupart des cas, et aidera à garder la grille en bonne santé. Si vous avez des questions, vous pouvez me trouver sur irc.freenode.net #opensim ou #osgrid.

--BlueWall 15:53, 19 June 2008 (PDT)

Automatiser les mises à jour

Linux (CentOS-5)

Ce script va sauvegarder vos paramètres, récupérer la dernière version d'OpenSim, construire OpenSim, et restaurer vos paramètres dans la nouvelle version. Il crée la nouvelle version dans un nouveau répertoire vous permettant de revenir à la version précédente en changeant simplement le lien 'current' pour pointer vers la version que vous voulez utiliser.

Note: Cela peut ne pas fonctionner correctement si vous mettez à jour des versions assez éloignées les unes des autres. Les mises à jour mineures devraient fonctionner correctement. Parfois, vous devez vider le SAVEDIR pour éviter que de très vieux fichiers ne perturbent une nouvelle mise à jour.

Ce script suppose que vous utilisez le numéro de version SVN comme répertoire OpenSimulator avec un lien appelé 'current' pointant vers celui-ci. Ainsi, vous pouvez, par exemple, avoir un répertoire appelé '/home/opensim/7577' et un lien 'current -> 7577'. Ce script utilise également un dossier de sauvegarde pour déplacer les paramètres de l'ancienne version vers la nouvelle.

Vous pouvez également comparer les fichiers 'OpenSim.ini' et 'OpenSim.ini.example' à la main après avoir exécuté ce script de mise à jour. Il y a souvent des changements dans ce fichier qui sont nécessaires pour la nouvelle version. La commande 'diff -bB' est très utile pour cette comparaison.

#!/bin/bash -x

CWD=`pwd`
MWD="/home/opensim"  #  Répertoire de travail principal
SAVEDIR="$MWD/save"  #  Répertoire de sauvegarde

if [ ! -d $SAVEDIR ]; then mkdir $SAVEDIR; fi
if [ ! -d $SAVEDIR/Regions ]; then mkdir $SAVEDIR/Regions; fi
if [ ! -d $SAVEDIR/DataSnapshot ]; then mkdir $SAVEDIR/DataSnapshot; fi
if [ ! -d $SAVEDIR/config-include ]; then mkdir $SAVEDIR/config-include; fi

cd $MWD

# sauvegarder les paramètres actuels
cp current/bin/*.xml $SAVEDIR
cp current/bin/*.db $SAVEDIR
cp current/bin/*.ini $SAVEDIR
cp current/bin/config-include/*.ini $SAVEDIR/config-include/
cp current/bin/Regions/*xml $SAVEDIR/Regions/
cp current/bin/DataSnapshot/*xml $SAVEDIR/DataSnapshot/

# Téléchargez une nouvelle copie d'OpenSimulator
REV=`svn info http://opensimulator.org/svn/opensim/trunk | fgrep Revision | awk '{print $2}'`
svn -r $REV co http://opensimulator.org/svn/opensim/trunk $REV
rm current
ln -s $REV current
cd current
./runprebuild.sh
nant
cd bin
# restaurer les paramètres
if [ ! -d ./DataSnapshot ]; then mkdir ./DataSnapshot; fi
cp $SAVEDIR/*.xml .
cp $SAVEDIR/*.db .
cp $SAVEDIR/*.ini .
cp $SAVEDIR/config-include/* config-include/
cp $SAVEDIR/Regions/* Regions/
cp $SAVEDIR/DataSnapshot/* DataSnapshot/
cd $MWD
cd current
#
cd $CWD

Windows

Créez un fichier batch pour démarrer votre grille, par exemple startGrid.bat ;

 @Echo OFF

For /F "Usebackq" %%i In (`Tasklist ^| Find /C "OpenSim"`) Do If /I %%i GTR 0 Echo There are %%i OpenSimulator processes running already. I quit! & Goto END

:: %PROGRAMFILES% expands to your normal application path
:: On an English system this is normally C:\Program Files
:: If you run a 64-bit Windows, with OpenSimulator as a 32-bit
:: application, substitute with %PROGRAMFILES(X86)%

Echo Starting Robust Server...
start "Robust" /MIN /D "%PROGRAMFILES%\OpenSim" OpenSim.Robust.exe
sleep 5
Echo Starting Region Server...
start "RegionServer" /MIN /D "%PROGRAMFILES%\OpenSim" OpenSim.exe -gridmode=true

:END

PS ! Vérifiez que vous avez la commande sleep installée, je ne suis pas sûr que toutes les versions de Windows l'aient. Si sleep n'est pas installé, on peut utiliser un ping localhost à la place de "sleep 3".

PING -n 4 127.0.0.1>nul

Cet article des connaissances de base décrit comment ajouter un fichier batch au démarrage de Windows (avant la connexion).
http://support.microsoft.com/kb/q243486/
Notez que vous devez démarrer toutes les applications et répondre aux questions de configuration avant de l'ajouter à tout démarrage.

Si vous démarrez le serveur avant la connexion alors il n'y aura pas de fenêtre à fermer si vous voulez arrêter le serveur, vous pouvez donc créer un "StopGrid.BAT" avec :

taskkill /FI "IMAGENAME eq OpenSim.*"
sleep 3
taskkill /FI "IMAGENAME eq OpenSim.*"
sleep 3
taskkill /F /FI "IMAGENAME eq OpenSim.*"

Ou un batch plus avancé qui arrête les processus du serveur dans l'ordre inverse de celui recommandé dans le manuel.

@Echo OFF

For /F "Usebackq" %%i In (`Tasklist ^| Find /C "OpenSim"`) Do If /I %%i EQU 0 Echo There are no OpenSimulator processes running. Nothing to stop.. & Goto END


Echo Stopping Region Server...
taskkill /T /IM OpenSim.exe > NUL 2>&1
If ERRORLEVEL 128 Echo Region Server was not running! & Echo. & Goto n1
:r1
If ERRORLEVEL 1 taskkill /T /F /IM OpenSim.exe > NUL 2>&1
If ERRORLEVEL 0 Echo Region Server stopped. & Echo. & Goto n1
Goto r1

:n1
Echo Stopping Robust Server...
taskkill /T /IM OpenSim.Grid.Robust.exe > NUL 2>&1
If ERRORLEVEL 128 Echo Robust Server was not running! & Echo. & Goto n2
:r2
If ERRORLEVEL 1 taskkill /T /F /IM OpenSim.Grid.Robust.exe > NUL 2>&1
If ERRORLEVEL 0 Echo Robust Server stopped. & Echo. & Goto n2
:END

Voir aussi

Personal tools
General
About This Wiki