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 03/05/2011, à 19:09

baba00000000

[Résolu] Bash commande1 & commande2, ...

Bonjour à tous.

Je mets l'exemple de mon bash:



while :
do (

partie du bash commune.

sh -x $basechemin"bash1.sh" & sh  -x $basechemin"bash2.sh" & sh -x $basechemin"bash3.sh" & sh -x $basechemin"bash4.sh" & sh -x $basechemin"bash5.sh" & sh -x $basechemin"bash6.sh" & sh -x $basechemin"bash7.sh"

)
sleep ??
done

Si je le lance sans While sa marche parfaitement.
Maintenant j'ai rajouté while pour que même si je ne suis plus là la boucle continue.

Je voudrais que tout mes bash1 à 7 finisse avant de recommencé la boucle est-ce possible?

En écrivant le message j'ai pensé à mettre && done après bash7 ( peut être stupide ou pas).

while :
do (

partie du bash commune.

(sh -x $basechemin"bash1.sh" & sh  -x $basechemin"bash2.sh" & sh -x $basechemin"bash3.sh" & sh -x $basechemin"bash4.sh" & sh -x $basechemin"bash5.sh" & sh -x $basechemin"bash6.sh" & sh -x $basechemin"bash7.sh")) && done

(Marche pas des masses)
C'est une idée.
Je n'ai pas de grande connaissance, j'apprends par moi même et avec l'aide de la communauté que je remercie.

Problème: Quand un bash de 1 à 7 fini il relance tout le bash principal. Faudrait que tout les sous bash finisse et après ensuite le bash principal se relance.

J'espère avoir été clair dans mon explication. Merci au lecteur et aux futur personne qui vont m'aider.

Dernière modification par baba00000000 (Le 04/05/2011, à 19:03)


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#2 Le 03/05/2011, à 22:50

pode

Re : [Résolu] Bash commande1 & commande2, ...

Il faut utiliser le built-in wait
Exemple :

$ cat wait.sh
#!/bin/bash
while :
do
  echo "locate tutu"
  locate tutu &
  echo "locate tyty"
  locate tyty &
  wait
  echo "fini"
done
$ ./wait.sh 
locate tutu
locate tyty
/home/pode/scripts/lientutu
/home/pode/scripts/tutu
/home/pode/scripts/JDom/tutu.xml
/home/pode/scripts/liensym/tutu
/home/pode/scripts/repertoire_properties/tutu.properties
/home/pode/scripts/repertoire_properties/tutu.properties.orig
fini
locate tutu
locate tyty
[...]

Hors ligne

#3 Le 04/05/2011, à 10:22

baba00000000

Re : [Résolu] Bash commande1 & commande2, ...

Merci pode pour la commande j'ai essayer mais n'y suis  pas parvenu avec ton exemple.

Je pense que les parenthèse ne servent à rien non ?

while :
do 

partie du bash commune.

sh -x $basechemin"bash1.sh" & sh  -x $basechemin"bash2.sh" & sh -x $basechemin"bash3.sh" & sh -x $basechemin"bash4.sh" & sh -x $basechemin"bash5.sh" & sh -x $basechemin"bash6.sh" & sh -x $basechemin"bash7.sh" 
wait
done

Ca devrais resembler à ça non ?
J'avais laissé les parenthèse et ça na pas marcher je referais une test en rentrant dans l'après midi.

Une question qui à rien a voir mais comme je l'ai vu dans ton exemple. A quoi correspond cette ligne ?
$ ./wait.sh surtout le $

Je te remerci pour la rapidité de ta réponse.


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#4 Le 04/05/2011, à 16:42

baba00000000

Re : [Résolu] Bash commande1 & commande2, ...

Comme je n'arrive pas j'ai mis tout les bash secondaire 1-7, à la suite ce qui me permet de lancé le script mais prendra 7 fois plus de temps.

Par contre en ça viens de me faire penser à un truc.

locate tyty & D'après ce que tu mets et mes petites connaissances ta commande ce lance en BG
et me dis que moi j'avais tout laissé sur une ligne peux être dois-je mettre tout comme ceci afin de me servir de wait?

Exemple de la chose :

sh -x $basechemin"bash1.sh" & 
sh  -x $basechemin"bash2.sh" & 
sh -x $basechemin"bash3.sh" & 
sh -x $basechemin"bash4.sh" & 
sh -x $basechemin"bash5.sh" 
& sh -x $basechemin"bash6.sh" &
 sh -x $basechemin"bash7.sh"&
wait

Ca resemble plus à ton exemple wink

Edit:
Voilà je pense que mon problème est résolut.

Merci beaucoup Pode. J'ai mi un peu de temps à comprendre.
C'est bien la dernière solution au dessu de mon édit qui marche. Maintenant j'attends pour voir s'il redémarre.

Dernière modification par baba00000000 (Le 04/05/2011, à 19:04)


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#5 Le 04/05/2011, à 20:05

pode

Re : [Résolu] Bash commande1 & commande2, ...

Quelques réponses.

Les parenthèses ne doivent pas te servir. Ça sert si on veut lancer des commandes dans un sous-shell
Sous un bash :

$ (echo $BASH_SUBSHELL)
1
$ echo $BASH_SUBSHELL
0

Le dollar ($) en début de ligne est juste une convention classique représentant le prompt d'un shell pour un utilisateur non root.
Pour l'utilisateur root, on utilise plutôt le dièse (#)

Le et commercial simple (&) permet de faire une commande en tâche de fond.
Écrire chaque lancement de commandes en tâche de fond sur des lignes différentes permet effectivement de lire le script plus facilement.

Hors ligne

#6 Le 04/05/2011, à 20:15

baba00000000

Re : [Résolu] Bash commande1 & commande2, ...

Merci pour les précisions. Je comprends mieux.


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne