Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Execution de taches en parallèle
Envoyé par: uraeus

Bonjour,

Je travaille sur une station Sun (avec pleins de processeurs qui vont bien), sur laquelle j'execute des calculs qui peuvent prendre du temps. En fait je lance ces calculs très simplement de façon séquentiels grâce à un script du genre :

./calcul1a
./calcul1b
./calcul1c
./calcul2a
./calcul2b
./calcul2c

Calcul1a, 1b et 1c doivent s'éxécuter dans cet ordre, pareil pour calcul2a,2b et 2c. Mais calcul1 et Calcul2 n'ont aucun lien entre eux.

Ma question est donc la suivante, comment peut-on simplement, en un seul script lancé l'exécution en parallèle des séquences calcul1 et calcul2 sans avoir à lancer à la main dans 2 terminal différents (ce je fait actuellement) un script pour la séquence calcul1 et un script pour la séquence calcul2.

J'espère avoir été assez clair...yawning smiley)
Vous aurez compris que je suis loin d'être un jedi d'unix...

Merci d'avance pour votre aide







Poste le Wednesday 19 September 2007 13:56:23
Répondre     Citer    
Re: Execution de taches en parallèle

calcul1a; calcul1b; calcul1c &
calcul2a; calcul2b; calcul2c &

mais je conseille de regarder les commandes at et batch

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Wednesday 19 September 2007 14:03:11
Répondre     Citer    
Re: Execution de taches en parallèle

J'avais penser à
calcul1a && calcul1b && calcul1c ; calcul2a && calcul2b && calcul2c 
afin de ne lancer le calcul suivant que si le premier s'est bien déroulé.

C'est en forgeant qu'on devient forgeron, et c'est en sciant que Léonard De Vinci !

Mon site perso

Poste le Wednesday 19 September 2007 14:13:32
Répondre     Citer    
Re: Execution de taches en parallèle
Envoyé par: uraeus

C'est nickel, merci. ca bien plus vite!!!


Mais je me pose une autre question. En fait, chaque calcul me renvoie des informations sur le terminal. Avec la méthode que vous me proposez, chaque job me renvoie ses informations en même temps sur le même terminal, du coup c'est pas trop lisible...


Est-il possible à partir d'un script d'ouvrir un nouveau terminal pour y executer un job??


Dans mon cas, j'aimerai que calcul1a; calcul1b; calcul1c soit executé dans un terminal 1 et calcul2a; calcul2b; calcul2c dans un terminal 2?


Poste le Thursday 20 September 2007 08:35:15
Répondre     Citer    
Re: Execution de taches en parallèle
Envoyé par: oudoubah

Tu as 2 possibilités : soit écrire directement dans un terminal :
calcul1a > /dev/tty1 && calcul1b >/dev/tty1 && calcul1c >/dev/tty1 &
calcul2a > /dev/tty2 && calcul2b >/dev/tty2 && calcul2c >/dev/tty2 &

L'inconvénient c'est que tu ne pourras avoir que l'affichage, tu ne pourras pas le mettrre dans un fichier.

L'autre solution consiste à écrire dans un fichier :
calcul1a >> /tmp/tty1 && calcul1b >>/tmp/tty1 && calcul1c >>/tmp/tty1 &
calcul2a >> /tmp/tty2 && calcul2b >>/tmp/tty2 && calcul2c >>/tmp/tty2 &
et dans chaque terminal tu fais un tail -f /tmp/ttyX

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Thursday 20 September 2007 08:40:56
Répondre     Citer    
Re: Execution de taches en parallèle
Envoyé par: uraeus

Citation
oudoubah
Tu as 2 possibilités : soit écrire directement
dans un terminal :
calcul1a > /dev/tty1
&& calcul1b >/dev/tty1 &&
calcul1c >/dev/tty1 &
calcul2a > /dev/tty2 && calcul2b
>/dev/tty2 && calcul2c >/dev/tty2
&

L'inconvénient c'est que tu ne pourras avoir que
l'affichage, tu ne pourras pas le mettrre dans un
fichier.

L'autre solution consiste à écrire dans un fichier
:
calcul1a >> /tmp/tty1 && calcul1b
>>/tmp/tty1 && calcul1c
>>/tmp/tty1 &
calcul2a >> /tmp/tty2 && calcul2b
>>/tmp/tty2 && calcul2c
>>/tmp/tty2 &
et dans chaque terminal tu fais un tail -f
/tmp/ttyX

> A l'heure actuelle, il s'est formé une sorte
"d'aristocratie" de Linux qui essaye de maintenir
ses connaissances pour elles et d'en priver les
autres en innondant chaque débutant de
documentations
-+- EF in Guide du linuxien pervers : "Comprenne
qui pourra..." -+-

Ca ne fonctionne pas, je ne dois pas avoir les droits adéquats
par contre j'ai trouvé mon bonheur avec

xterm -geometry +30+200 -e ./calcul1 & xterm -geometry +630+200 -e ./calcul2

Comme ça je peux suivre ce qui se passe et les fenetres se ferment à la fin si tout se passe bien.

Merci à tous];-)

Poste le Thursday 20 September 2007 10:27:24
Répondre     Citer    
Re: Execution de taches en parallèle
Envoyé par: Sve@r

Citation
uraeus
j'ai trouvé mon bonheur avec

xterm -geometry +30+200 -e ./calcul1 & xterm
-geometry +630+200 -e ./calcul2

Comme ça je peux suivre ce qui se passe et les
fenetres se ferment à la fin si tout se passe
bien.

Merci à tous

En fait, tu fais exactement comme au début, à savoir lancer tes calculs dans deux terminaux différents. Sauf que tu lances ces calculs dans ces terminaux de façon automatique alors qu'avant, tu les lançais à la mano... yawning smiley)


L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Wednesday 3 October 2007 22:42:49
Répondre     Citer    
Re: Execution de taches en parallèle
Envoyé par: gbe54

Si tu veux le faire en shell tu peux également ajouter un wait à la fin pour attendre tous les process en cours.

--
[lordikc.free.fr]

Poste le Wednesday 7 November 2007 21:05:43
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Execution de taches en parallèle
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons