Automating Tasks/fr

= Démarrage automatisé de la grille =

Voir

 * /etc/init.d script daemon-> script de démarrage
 * Mise à jour automatisée LINUX
 * démarrage
 * systemd

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

cd opensim/bin screen -S Robust -d -m mono OpenSim.Robust.exe sleep 10 screen -S OpenSimulator -d -m mono OpenSim.exe -gridmode=true
 * 1) !/bin/sh

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...

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
 * 1) !/bin/bash

osgridstart.sh
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 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
 * 1) !/bin/bash
 * 1) echo " Wait 40 seconds and then start regions."

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 screen -S Robust -X quit sleep 10 screen -S OpenSim -X quit
 * 1) !/bin/bash

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...

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
 * 1) !/bin/bash

osgridstop.sh
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
 * 1) !/bin/bash

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...

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
 * 1) !/bin/bash

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)

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.


 * 1) !/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

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/
 * 1) sauvegarder les paramètres actuels

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 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
 * 1) Téléchargez une nouvelle copie d'OpenSimulator
 * 1) restaurer les paramètres

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



Voir aussi

 * Smart Prestart WIN
 * Automated Upgrade WIN