1 Visualiser l`utilisation des jetons
Transcription
1 Visualiser l`utilisation des jetons
PLM Mathrice 9 février 2011 Personnalisation du hostname affiché par Matlab et Maple Lorsque Matlab ou Maple sont utilisés avec un serveur de jetons, ce dernier offre la possibilité de connaı̂tre par qui sont utilisés les autres jetons. C’est le rôle de la commande lmstat (cf. 1). Les informations sont assez basiques puisqu’il s’agit du nom de la machine et du nom de l’utilisateur qui a lancé le processus. Le nom des machines qui occupent un jeton n’est pas celui vu par le serveur de jetons (ie. celui associé à son adresse IP). Il lui est transmis au démarrage de chaque instance (sur les clients) qui récupère la valeur retournée par commande hostname. Cela n’est pas toujours suffisamment explicite pour identifier la machine. Nous allons donc voir ici comment modifier le nom d’hôte qui sera affiché par le serveur de jetons sans toucher à ce que retourne la commande hostname. 1 1.1 Visualiser l’utilisation des jetons Matlab La commande lmstat affiche la liste des de jetons en cours d’utilisation. La façon de l’invoquer dépend de la version de matlab utilisée. Avant la version 2010b, lmstat est accessible directement depuis le répertoire etc du dossier d’installation. Par exemple, si Matlab 2008 a été installé dans /usr/local/matlab-R2008 cela donne : bash> cd / u s r / l o c a l / matlab−R2008/ e t c bash> . / l m s t a t −a −c . . / l i c e n s e s / l i c e n s e . dat A partir de la version 2010, il faut utiliser la commande lmutil qui se trouve dans le dossier etc/glnxa64 (version 64bits) ou etc/glnx86 (version 32bits) du répertoire d’installation de Matlab. Par exemple, si Matlab 2010b 64bits a été installé dans /usr/local/matlab-R2010b cela donne : bash> cd / u s r / l o c a l / matlab−R2010b/ e t c / g l n x a 6 4 bash> . / l m u t i l l m s t a t −a −c . . / . . / l i c e n c e s / l i c e n c e . dat 1.2 Maple La commande lmutil est aussi livrée avec Maple. Son emplacement dépend également de la version utilisée. Avec les versions 9.0 et 9.5, elle se trouve dans le répertoire FLEXlm/UNIX/LINUX du dossier d’installation de Maple. Avec les versions 11 et 12, elle se trouve dans le dossier des binaires du répertoire ou Maple à été installé. Pour les versions 32bits il s’agit de bin.IBM INTEL LINUX. En 64bits, c’est bin.X86 64 LINUX. Si Maple 9.0 a été installé dans /usr/local/maple-9.0, cela donne : bash> cd / u s r / l o c a l / maple −9.0/FLEXlm/UNIX/LINUX bash> . / l m u t i l l m s t a t −a −c . . / . . / l i c e n c e s / l i c e n c e . dat 2 Compilation de la bibliothèque Le rôle de cette bibliothèque est de remplacer la fonction gethosname() de la bibliothèque standard par une nouvelle nous permettant de retourner un nom de machine plus explicite. Elle est composée de deux fichiers : my-hostname.h1 et my-hostname.c2 . Listing 1: my-hostname.h #include #include #include #include < s t d l i b . h> <s t d i o . h> <s y s / utsname . h> <s t r i n g . h> extern int gethostname ( char ∗name , s i z e t l e n ) ; Listing 2: my-hostname.c #include ”my−hostname . h” int gethostname ( char ∗name , s i z e t l e n ) { struct utsname buf ; char∗ s t r ; int c = 0 ; int i = 0 ; s t r = g e t e n v ( ”MY HOSTNAME” ) ; /∗ No environment v a r i a b l e a v a i l a b l e : u s i n g uname ( ) ∗/ i f ( s t r == NULL) { i f ( uname(& buf ) < 0 ) return −1; s t r = buf . nodename ; } for ( i =0 ; i <s t r l e n ( s t r ) && c<l e n −1 ; i ++) name [ c++] = s t r [ i ] ; name [ c ] = ’ \0 ’ ; return 0 ; } 1 2 http://plm.math.cnrs.fr/my-hostname.h http://plm.math.cnrs.fr/my-hostname.c La compilation s’effectue de la façon suivante (testée sur une distribution Debian lenny i386 ou amd64 avec gcc 4.3.2 et libc 2.7-1 ) : bash> g c c −Wall −s h a r e d − f p i c −o my−hostname . s o my−hostname . c 3 Installation dans Matlab La première étape consiste à déposer la bibliothèque précédente à la racine du dossier de MATLAB. Dans l’exemple ci-dessous nous utilisons /usr/local/matlab-r2010b. bash> cp my−hostname . s o / u s r / l o c a l / matlab−r2010b Nous remplaçons le binaire de Matlab par un script qui charge la bibliothèque dynamique et invoque le binaire d’origine (dans le cas d’une version 32bits, glnxa64 est à remplacer par glnx86 ) : bash> bash> bash> bash> cd / u s r / l o c a l / matlab−r2010b / b i n / g l n x a 6 4 mv MATLAB MATLAB. b i n v i MATLAB chmod 755 MATLAB Listing 3: MATLAB #! / b i n / b a s h export MY HOSTNAME=‘ hostname −f ‘ export LD PRELOAD=$MATLAB/my−hostname . s o DNUM=‘echo $DISPLAY | sed −e ’ s / . ∗ : \ ( [ 0 − 9 ] ∗ \ ) . [ 0 − 9 ] / \ 1 / ’ ‘ SHORT=‘ hostname −s ‘ i f xauth l i s t | g r e p −q ” ˆ$MY HOSTNAME\/ unix :$DNUM” then echo ”X11 c o o k i e f o r $MY HOSTNAME/ unix :$DNUM a l r e a d y e x i s t i n your . Xauthority ” else XCOOKIE=‘ xauth l i s t | sed −n ” /ˆ$SHORT\/ unix :$DNUM/ s /$SHORT/ $MY HOSTNAME/ p” ‘ xauth add $XCOOKIE fi $MATLAB/ b i n / g l n x a 6 4 /MATLAB. b i n $ ∗ xauth remove $MY HOSTNAME/ unix :$DNUM 4 Installation dans Maple La première étape consiste à déposer la bibliothèque précédente à la racine du dossier de MAPLE. Dans l’exemple ci-dessous nous utilisons /usr/local/maple-12. Pour fonctionner elle doit avoir été compilée sur une machine 32bits, même si elle utilisée avec une installation 64bits de Maple. bash> cp my−hostname . s o / u s r / l o c a l / maple −12 La suite dépend de l’architecture utilisée. 4.1 Version 32bits Le fichier binaire mserver est renommé en mserver.bin. A la place nous y déposons le script mserver ci-dessous qui charge la bibliothèque dynamique my-hostname.so avant d’invoquer le binaire original. bash> bash> bash> bash> cd / u s r / l o c a l / maple −12/ b i n . X86 INTEL LINUX mv mserver mserver . b i n v i mserver chmod 755 mserver Listing 4: mserver #! / b i n / b a s h export MY HOSTNAME=‘ hostname −f ‘ #e x p o r t LD DEBUG= f i l e s export LD PRELOAD=$MAPLE/my−hostname . s o exec $MAPLE/ b i n . IBM INTEL LINUX/ mserver . b i n $ ∗ 4.2 Version 64bits Le fichier binaire mfsd est renommé en mfsd.bin. A la place nous y déposons le script mfsd ci-dessous qui charge la bibliothèque dynamique my-hostname.so avant d’invoquer le binaire original. bash> bash> bash> bash> cd / u s r / l o c a l / maple −12/ b i n . X86 64 LINUX mv mfsd mfsd . b i n v i mfsd chmod 755 mfsd Listing 5: mfsd #! / b i n / b a s h export MY HOSTNAME=‘ hostname −f ‘ #e x p o r t LD DEBUG= f i l e s export LD PRELOAD=$MAPLE/my−hostname . s o exec $MAPLE/ b i n . X86 64 LINUX/ mfsd . b i n $ ∗