Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/07/2006, à 13:40

gadjou

Commandes en parallèles dans un script

Bonjour,
Je souhaite dans un script effectuer 3 commandes en parallèle, puis une 4ème lorsque les 3 précedentes sont terminés. Or je ne sais pas d'avance laquelle des 3 va se terminer en dernier. Concretement, je grabbe des xmltv dans 3 pays (de, be, fr), cela dure entre 15 et 30 min par pays et marche bien en parallèle. Lorsque j'ai récupéré les 3 xml, je les concatène avec tv_cat. Ca doit être facile pour les champions du script. Merci

Ma mauvaise soluce qui ne marche que si DE fini en dernier:

tv_grab_fr ... &
tv_grab_be ...&
tv_grab_de ... 
tv_cat

Hors ligne

#2 Le 24/07/2006, à 02:31

azertyman

Re : Commandes en parallèles dans un script

utilisation de do...while


do
  action 1
  action2
  action3
  ...
while (pas_bon) ;

Hors ligne

#3 Le 24/07/2006, à 13:39

coffee

Re : Commandes en parallèles dans un script

tu risques de boucler pas mal de temps là...

wget (qui te sert a recup les fichiers xml je pense) ne permet pas de recuperer 3 fichiers en même temps?


Nom d'un tupperware habillé en streetware mangeant de la confiture de pouère et qui se dite où est-ce que je suis ouère !
Tiens mon blog
Les blagues sous forme de fausses aides sont susceptible de ban (ex: rm)

Hors ligne

#4 Le 25/07/2006, à 01:02

kaworu

Re : Commandes en parallèles dans un script

Salut !
est-ce que ça roule comme ça :

tv_grab_fr ... &
tv_grab_be ...&
tv_grab_de ... &

wait
tv_cat

/me matte son bouquin de bash...

EDIT :
ça me semble correct. La commande wait attend que les processus lancés par le script soient finis avant de lancer la suite du script. On peut lui donner en paramètre un argument (PID du processus) pour qu'il attende un processus en particulier. Utile à la fin d'un script pour ne pas laisser de processus "orphelins".

ça marche?

Dernière modification par kaworu (Le 25/07/2006, à 01:10)


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#5 Le 25/07/2006, à 01:29

Black_pignouf

Re : Commandes en parallèles dans un script

Et:

(tv_grab_fr ... &
 tv_grab_be ...&
 tv_grab_de ...&) && tv_cat

?

Dernière modification par Black_pignouf (Le 25/07/2006, à 01:33)

Hors ligne

#6 Le 25/07/2006, à 03:10

coffee

Re : Commandes en parallèles dans un script

Black_pignouf a la solution je pense wink


Nom d'un tupperware habillé en streetware mangeant de la confiture de pouère et qui se dite où est-ce que je suis ouère !
Tiens mon blog
Les blagues sous forme de fausses aides sont susceptible de ban (ex: rm)

Hors ligne

#7 Le 25/07/2006, à 10:07

Black_pignouf

Re : Commandes en parallèles dans un script

Ben en fait bof hmm
J'ai essayé avec des wget à la place des tv_grab et echo à la place de tv_cat, et l'echo a été lancé dès le début sad

Je n'ai pas essayé la soluce de kaworu, mais elle pourrait convenir...

Hors ligne

#8 Le 25/07/2006, à 14:33

coffee

Re : Commandes en parallèles dans un script

(tv_grab_fr ... |
 tv_grab_be ...|
 tv_grab_de ...) && tv_cat

j'avais mal lu ton script black_pignouf, ça doit marcher ça


Nom d'un tupperware habillé en streetware mangeant de la confiture de pouère et qui se dite où est-ce que je suis ouère !
Tiens mon blog
Les blagues sous forme de fausses aides sont susceptible de ban (ex: rm)

Hors ligne

#9 Le 26/07/2006, à 08:21

gadjou

Re : Commandes en parallèles dans un script

Merci beaucoup, je vais essayer tous ça (plutôt ce week-end) et je vous tiens au courant.

@coffee: en fait tu l'aura peut-être compris, je n'utilise pas des wget pour eécuperer les xmls, mais des scripts tv_grab_xx.

Hors ligne

#10 Le 26/07/2006, à 08:50

kaworu

Re : Commandes en parallèles dans un script

@coffee : des tubes ???

@ gadjou :
j'ai testé mon truc avec des-commandes-qui-prennent-du-temps et un echo à la fin et ça passe nikel, je te laisse regarder wink

alex@gentoo ~ $ wget www.gentoo.org/index.html & ls /bin & grep "EE" /var/log/Xorg.0.log & wait ; echo "FIN"
[1] 23324
[2] 23325
[3] 23326
--09:00:56--  http://www.gentoo.org/index.html
           => `index.html'
Resolving www.gentoo.org... Current Operating System: Linux gentoo 2.6.17-gentoo-r4 #1 PREEMPT Sun Jul 23 14:25:04 BST 2006 i686
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(II) Loading extension MIT-SCREEN-SAVER
arch      bzegrep       chmod       date           echo        grep      igawk     lsattr     mv             ping        readlink   sleep  tempfile  vdir          zfgrep
awk       bzfgrep       chown       dd             ed          groups    install   lsmod      nano           ping6       red        sort   touch     wc            zforce
basename  bzgrep        chroot      df             egrep       gunzip    kill      lsmod.old  netstat        printenv    rm         split  tr        who           zgrep
bash      bzip2         cksum       dir            env         gzcat     killall   mbchk      nice           ps          rmdir      stat   true      whoami        zless
bb        bzip2recover  comm        dircolors      expr        gzexe     link      mkdir      nisdomainname  pstree      rnano      stty   tty       yes           zmore
bunzip2   bzless        cp          dirname        false       gzip      ln        mkfifo     nohup          pstree.x11  run-parts  su     umount    ypdomainname  znew
busybox   bzmore        cpio        dmesg          fgrep       head      loadkeys  mknod      oldfuser       ptx         sed        sync   uname     zcat
bzcat     cat           cryptsetup  dnsdomainname  fuser       hostid    login     mktemp     passwd         pwd         seq        tar    uniq      zcmp
bzcmp     chattr        csh         domainname     gawk        hostname  logname   more       pgawk          rbash       setfont    tcsh   unlink    zdiff
bzdiff    chgrp         cut         du             gawk-3.1.5  id        ls        mount      pidof          rc-status   sh         tee    uuidgen   zegrep
38.99.64.201, 66.219.59.46, 66.241.137.77
Connecting to www.gentoo.org|38.99.64.201|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://www.gentoo.org/index.xml [following]
--09:00:56--  http://www.gentoo.org/index.xml
           => `index.xml.11'
Reusing existing connection to www.gentoo.org:80.
HTTP request sent, awaiting response... 200 OK
Length: 13,944 (14K) [text/html]

100%[==========================================================================================================================================>] 13,944        28.98K/s

09:00:57 (28.96 KB/s) - `index.xml.11' saved [13944/13944]

[1]   Done                    wget www.gentoo.org/index.html
[2]-  Done                    ls --color=auto /bin
[3]+  Done                    grep "EE" /var/log/Xorg.0.log
FIN
alex@gentoo ~ $ jobs
alex@gentoo ~ $

Dernière modification par kaworu (Le 26/07/2006, à 08:58)


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#11 Le 29/07/2006, à 17:49

gadjou

Re : Commandes en parallèles dans un script

@Kaworu, Effectivement  ton truc marche nickel. Merci  smile.
@coffee. j'ai essayé ta méthode, mais le schell rale à cause des pipes hmm... merci quand même

Hors ligne