Shell dans shell, tourne sans arrêt
Bonjour,
ca fait plusieurs jours que je travaille sur un programme pour extraire des résultats d'une simulation et j'ai quelques problèmes:
J'ai un shell qui démarre ma simulation et qui une fois le calcul terminé doit lancer un autre shell qui s'occupe d'extraire les fameux résultats, les mettre dans un dossier, le transfert sur un autre PC et lance le traitement des données avec MATLAB.
Il y a déjà longtemps que j'utilise le premier donc de ce coté là, rien à signaler mais lorsque que j'intègre le second, il est bloqué dans un boucle qui me refait sans aret ma simulation, ce que je ne veux pas. Vous en pensez quoi?
Voici le premier shell:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #!/bin/sh
SIM_TAB=( 'Cas_test' )
PRO_NUM=8
DESTINATION= BLABLA
# ==========BOUCLE==================
SIM_NUM=${#SIM_TAB[*]}
for((i=0;i<=($SIM_NUM - 1);i++))
do
SIM_NAME=${SIM_TAB[$i]}
BATCH_NAME=$SIM_NAME'.sh'
cp batch-4-18.sh $SIM_NAME/$BATCH_NAME
cd $SIM_NAME
qsub -pe mpich $PRO_NUM $BATCH_NAME
# =======ATTENTE FIN DE CALCUL==========
while [ $(qstat -r | grep -c $BATCH_NAME) -gt 0 ]
do sleep 15
done
# =======EXTRACTION DES RESULTATS AVEC STAR CD======
cd ..
. ./Extraction_donnees.sh
echo "Simulation Ended" | mail -s " $SIM_NAME ended " EMAIL
done
rm nohup.out
done |
Et voici le second:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| #!/bin/sh
echo "Simulation Ended" | mail -s " $SIM_NAME debut extraction " jonathan.brulatout.1@ens.etsmtl.ca
# ===== CHANGEMENT DU DOSSIER =====
source ./Simulation_18_extract.sh
cd $SIM_NAME
# ======EXTRACTION DES RESULTATS AVEC STAR CD=====
source /share/apps/starcd-4.18/etc/setstar
prostar x << EOT
Injecteur_Diesel
Y
Y
ifile,/state/partition1/home/jbrulatout/Data_Extraction/Export_data_only_dat_trkc.inp
quit
N
EOT
# Fonctionnement: Les commandes de STAR CD sont à insérer entre les deux EOT. Les trois premières lignes
# correspondent respectivement au "Case name", "Resume from model?", "Resume echo file". Ensuite viennent
# les commandes que l'on veut executer puis quitter l'application et savegarder ou pas suivant le cas.
# =====CREATION DU DOSSIER ANALYSE ET DEPLACEMENT DES FICHIERS=====
mkdir Analyse/
mv Injecteur_Diesel.trkc Injecteur_Diesel.dat Analyse/
# =======TRANSFERT DES DONNÉES======
cd ..
expect - <<ENDSCRIPT
set timeout -1
spawn scp -r $SIM_NAME $DESTINATION
expect {
"*password:*"
{
send "Jbr5a4.t\r"
exp_continue
}
}
ENDSCRIPT
echo "Simulation Ended" | mail -s " $SIM_NAME ended " EMAIL
# =====CONNEXION LATNA=====
expect - <<ENDCONNEXION
set timeout -1
spawn ssh PC_DISTANT
expect {
"*password:*"
{
send "MDP\r"
exp_continue
}
}
ENDCONNEXION
# =====EXTRACTION DES DONNEES AVEC MATBLAB=====
cd Simulation_Doctorat/Simulation_Recuperation/Last_day/$SIM_NAME/Analyse
matlab -nodesktop -nosplash - nojvm -r "addpath('/home/jbrulatout/Simulation_Doctorat/2_Analyse_Matlab'); Droplet$
# =====QUITTER LE LATNA=====
#exit |
Merci beaucoup pour votre aide
Bonne soirée