#!/bin/bash # fichier script shell # une ligne commençant par #PBS est une commande PBS # une ligne commençant par # est un commentaire # le shell utilisé par PBS pour interpréter # le fichier est bash #PBS -S /bin/bash # nom du job (facultatif) # 15 caractères maximun #PBS -N JobName # par défaut, les flux "output" et "error" sont envoyés # dans des fichiers situés dans le répertoire de # travail et dont les noms sont : # job_name.osequence_number <- output # job_name.esequence_number <- error # où job_name est le nom du job et sequence_number et # le numéro du job qui est assigné lors de la soumission # On peut changer les noms par défaut en utilisant les # commandes suivantes : # #PBS -o stdout_file # #PBS -e stderr_file # Pour éviter d'avoir trop de fichiers, on peut # regrouper les flux "output et "error" dans un seul # fichier : #PBS -j oe # PBS peut envoyer des informations sur l'état du job # par email : # un simple caractère "n" (pas de mail) # #PBS -m n # un ou plusieurs caractères : # "a" envoi email si le job est avorté, # "b" envoi email lorsque le job débute # "e" envoi email lorsque le job se termine # #PBS -m abe # #PBS -m ae # l'adresse email est spécifiée par la commande # #PBS -M cros@iup.univ-evry.fr # ressources demandées : # 1 noeud : nodes=1 # 1 processeur par noeud : ppn=1 #PBS -l nodes=1:ppn=1 # PBS_O_WORKDIR correspond au répertoire où a été lancé # le script, affichage pour vérification : echo $PBS_O_WORKDIR # permet de connaître le nom ou numéro du noeud sur # lequel va s'effectuer le calcul nodes=`cat $PBS_NODEFILE` # création d'un répertoire temporaire (nommé "dossier" # par exemple) auquel on adosse l'ID ($PBS_JOBID) du job afin # de rendre unique ce répertoire. Ce répertoire est créé # sur le noeud de calcul en deux étapes : # 1- la variable WD va pointer sur le répertoire où # va s'effectuer le calcul sur le noeud export WD=/scratch/dossier$PBS_JOBID # 2- création du répertoire temporaire sur le noeud # de calcul mkdir $WD # copie des fichiers de données dans le répertoire de # calcul # rmq : rcp -r permet de copier un répertoire rcp $PBS_O_WORKDIR/test.dat $nodes:$WD # copie de l'exécutable dans le répertoire de calcul rcp $PBS_O_WORKDIR/test $nodes:$WD # déplacement dans le répertoire de calcul cd $WD # lancement du calcul (commande "date" pour connaître # l'heure de début et de fin du calcul) date ./test date # la même chose mais avec redirection des impressions # dans un fichier date ./test > $WD/test.out2 date # récupération du fichier contenant les redirections # d'impression rcp $WD/test.out2 master0:$PBS_O_WORKDIR # récupération du résultat dans un répertoire sur # le frontal rcp $WD/test.out master0:$PBS_O_WORKDIR # le résultat peut être copié sur le serveur de fichiers rcp $WD/test.out master0:/data/cros # effacement du répertoire temporaire (dossier) sur le # noeud de calcul /bin/rm -r $WD