#1 Le 23/07/2006, à 12: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, à 01: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, à 12: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, à 00: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, à 00:10)
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
#5 Le 25/07/2006, à 00: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, à 00:33)
Hors ligne
#6 Le 25/07/2006, à 02:10
- coffee
Re : Commandes en parallèles dans un script
Black_pignouf a la solution je pense
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, à 09:07
- Black_pignouf
Re : Commandes en parallèles dans un script
Ben en fait bof
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
Je n'ai pas essayé la soluce de kaworu, mais elle pourrait convenir...
Hors ligne
#8 Le 25/07/2006, à 13: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, à 07: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, à 07: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
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, à 07:58)
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
#11 Le 29/07/2006, à 16:49
- gadjou
Re : Commandes en parallèles dans un script
@Kaworu, Effectivement ton truc marche nickel. Merci .
@coffee. j'ai essayé ta méthode, mais le schell rale à cause des pipes ... merci quand même
Hors ligne