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 11/07/2017, à 09:40

Mobidique

[RESOLU]Shell script, calcul parallèle, nohup, chainage ...

Bonjour,

Je programme en R.
Pour un paramètre j'ai 3 programmes à lancer. J'ai fait un shell script pour lancer ces 3 programmes dans l'ordre et séquentiellement. Le dernier fait du calcul parallèle.
J'ai 57 paramètres. J'ai fait 57 shell scripts comme ci-dessus. Les paramètres sont indépendants donc les shell scripts peuvent être lancés en même temps. J'ai regroupé mes paramètres en 3 thématiques et j'ai fait 3 shell scripts pour lancer les shell scripts de mes paramètres. Dans ces 3 shell scripts, je lance mes scripts de paramètre avec des "nohup sh ", une ligne par paramètre. Je lance les 3 shell scripts thématiques avec des nohup aussi ...

Tout va bien.

Et puis je réalise que finalement 3 paramètres d'une thématique ont besoin que 3 autres paramètres de cette même thématique soient exécutés avant. Depuis je me pose la question : comment faire pour lancer mes 3 premiers paramètres en parallèle et qu'à l'issue de la fin de traitement de ces 3 paramètres, je puisse lancer les 3 autres également en parallèle.

Je me prends les pieds dans le tapis des & des ; des nohup et des sh.
Je veux bien un peu d'aide
Merci.
@+

Dernière modification par Mobidique (Le 13/07/2017, à 08:55)


Debian buster : job laptop & desktop, sons desktops, latitude D420 branché sur l'ampli familial, home laptop & wife's laptop

Hors ligne

#2 Le 11/07/2017, à 09:59

pingouinux

Re : [RESOLU]Shell script, calcul parallèle, nohup, chainage ...

Bonjour,
Dans les parenthèses, les commandes sont exécutées séquentiellement, mais les 3 jeux sont envoyés en parallèle.

(command_1; command_2; command_3)&
(command_bis_1; command_bis_2; command_bis_3)&
(command_ter_1; command_ter_2; command_ter_3)&

Hors ligne

#3 Le 11/07/2017, à 12:57

Mobidique

Re : [RESOLU]Shell script, calcul parallèle, nohup, chainage ...

C'est un truc comme ça que je veux faire :

((sleep 3 ; echo 1) & (sleep 2 ; echo 2) & (sleep 1 ; echo 3)&) ; (sleep 3 ; echo 4) & (sleep 2 ; echo 5) & (sleep 1 ; echo 6)&

Les taches 1, 2 et 3 je les fais en tache de fond mais il faut que les trois soient finies pour faire 4, 5 et 6. Quand je fais le code ci-dessus ça me donne 3-6-2-5-1-4 autrement dit les sleep 1 puis les 2 puis les 3.


Debian buster : job laptop & desktop, sons desktops, latitude D420 branché sur l'ampli familial, home laptop & wife's laptop

Hors ligne

#4 Le 11/07/2017, à 14:17

pingouinux

Re : [RESOLU]Shell script, calcul parallèle, nohup, chainage ...

Il y a sans doute plus simple.

(sleep 3 ; echo 1)& pid1=$!; (sleep 2 ; echo 2)& pid2=$!; (sleep 1 ; echo 3)& pid3=$!;
while grep -q "$pid1\|$pid2\|$pid3" <(pidstat -p $pid1 -p $pid2 -p $pid3);do sleep 1;done
(sleep 3 ; echo 4)& (sleep 2 ; echo 5)& (sleep 1 ; echo 6)&

Hors ligne

#5 Le 11/07/2017, à 14:36

credenhill

Re : [RESOLU]Shell script, calcul parallèle, nohup, chainage ...

hello
et  comme ca ?

cmd1 & cmd2 & cmd3 & wait; cmd4 & cmd5 & cmd6 & wait;  ...

Hors ligne

#6 Le 11/07/2017, à 14:47

pingouinux

Re : [RESOLU]Shell script, calcul parallèle, nohup, chainage ...

@credenhill #5 :
Effectivement, ça marche aussi, et c'est nettement plus simple.

Hors ligne

#7 Le 11/07/2017, à 15:52

Mobidique

Re : [RESOLU]Shell script, calcul parallèle, nohup, chainage ...

(sleep 3 ; echo 1) & (sleep 2 ; echo 2) & (sleep 1 ; echo 3)& wait ; (sleep 3 ; echo 4) & (sleep 2 ; echo 5) & (sleep 1 ; echo 6)&

Ha oui c'est bien ça. J'ai bien 3,2,1 puis 6,5,4.
J'essaie cela en grandeur nature et je vous tiens au courant.
merci
@+

Dernière modification par Mobidique (Le 11/07/2017, à 15:53)


Debian buster : job laptop & desktop, sons desktops, latitude D420 branché sur l'ampli familial, home laptop & wife's laptop

Hors ligne

#8 Le 11/07/2017, à 18:04

Hizoka

Re : [RESOLU]Shell script, calcul parallèle, nohup, chainage ...

intéressant la façon de faire, merci credenhill.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#9 Le 13/07/2017, à 08:55

Mobidique

Re : [RESOLU]Shell script, calcul parallèle, nohup, chainage ...

Ok ça marche en grandeur nature, encore merci. Une dernière question de neophyte. Telle qu'on l'a envisagée, la commande est sur une ligne. Si je veux mettre ça dans un fichier, manifestement cela marche :

#!/bin/bash
(sleep 3 ; echo 1) & 
(sleep 2 ; echo 2) & 
(sleep 1 ; echo 3) & wait ; 
(sleep 3 ; echo 4) & 
(sleep 2 ; echo 5) & 
(sleep 1 ; echo 6) &

Toutefois j'ai l'intuition que le retour à la ligne et le ";" jouent le même rôle, donc je pense que je n'ai pas besoin du ";" après le wait.

Je viens d'essayer, c'est cela.
Merci encore, je passe en RESOLU.
@+

EDIT : et du coup je peux même descendre mon wait à la ligne.

Dernière modification par Mobidique (Le 13/07/2017, à 08:59)


Debian buster : job laptop & desktop, sons desktops, latitude D420 branché sur l'ampli familial, home laptop & wife's laptop

Hors ligne