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 14/07/2009, à 18:56

Black Star

Besoins d'aide pour Bash

Bonjour tout le monde ! smile

Je débute en programmation Bash, j'ai suivi quelques tutos et j'ai écrit mon premier script Bash, assez minimaliste je dois bien vous l'avouer mais il est au moins fonctionnel... enfin presque c'est pour ça que je suis ici d'ailleurs lol

En fait j'ai fait plusieurs scripts, plus précisément 3 scripts qui doivent s'executer dans un ordre bien précis. En gros ça donne ça :

Script_1
   |
   v
Script_2
   |
   v
Script_3

Donc en fait je dois lancer manuellement chacun des scripts, par exemple je lance le Script_2 lorsque le Script_1 à déjà été lancé. Mais afin que les scripts soient vraiment utiles je voudrai que par exemple ce soit le Script_1 qui lance lui même le Script_2 à un certain moment.

Le problème c'est que le Script_2 doit être lancé dans un autre terminal vu que le Script_1 doit continuer à tourner en même temps que le Script_2...

J'avais donc pensé à faire quelque chose de ce genre dans le Script_1 pour lancer le Script_2 :

./Script_2

Puis au tout début du Script_2 marquer ça :

gnome-terminal

Puis en dessous cette ligne mes autres instructions du Script_2. Mais si je fais ça en effet ça ouvre bien un nouveau terminal lorsque Script_1 lance Script_2 mais le problème c'est que les instructions contenu dans Script_2 se déroule quand même dans le terminal où est lancé Script_1...

C'est tout con comme problème, mais c'est les problèmes les plus simples qui sont les plus longs à expliqué, enfin du moins j'ai l'impression ou alors c'est moi qui suis pas doué ><

Donc si une âme charitable voudrai bien m'aider... ça serait SUPER sympa big_smile

Mirciiii smile

Hors ligne

#2 Le 14/07/2009, à 19:02

Grunt

Re : Besoins d'aide pour Bash

Dans le premier script tu mets:

./script2 &

Au moment où tu veux lancer le deuxième tout en continuant le premier.

#3 Le 14/07/2009, à 19:05

Zouk

Re : Besoins d'aide pour Bash

Essaie tout simplement
script2 & (ca rend la main à ton script)

Edit : raaaaaa grillé ! tongue

Dernière modification par Zouk (Le 14/07/2009, à 19:05)

Hors ligne

#4 Le 14/07/2009, à 19:12

Grunt

Re : Besoins d'aide pour Bash

Zouk a écrit :

Essaie tout simplement
script2 & (ca rend la main à ton script)

Edit : raaaaaa grillé ! tongue

cool

#5 Le 14/07/2009, à 19:12

#hehedotcom\'isback

Re : Besoins d'aide pour Bash

&&

Pour s'assurer de la fin traitement du premier script wink

Dernière modification par #hehedotcom\'isback (Le 14/07/2009, à 19:12)


../

Hors ligne

#6 Le 14/07/2009, à 19:13

Black Star

Re : Besoins d'aide pour Bash

Merci à vous deux pour cette....double réponse lol

J'ai essayé de mettre ça dans mon Script_1 mais toujours pareil les instructions du Script_2 apparaissent dans le terminal du Script_1...

Pourtant si vous êtes 2 à donner la même réponse c'est que ça doit fonctionner en principe ^^
Peut-être que c'est moi qui est mal compris quel est le rôle de cette instruction, vous pourriez m'expliquer à quoi elle sert plus précisément s'il vous plait ?

EDIT : une nouvelle réponse pendant que je postais ^^
Mais pas compris non plus, suis nul...je crois xD

Dernière modification par Black Star (Le 14/07/2009, à 19:14)

Hors ligne

#7 Le 14/07/2009, à 19:17

Zouk

Re : Besoins d'aide pour Bash

Ah cette fois ci c'est pour moi tongue
Alors pou virer les instructions qui apparaissent, il faut rediriger la sortie vers /dev/null :
script2 &> /dev/null &

Pour le rôle de l'instruction :
En fait quand tu lance le script2, ton script1 va attendre que script2 ait finit pour continuer (comme si tu lance une commande dans un terminal). Si tu ajoute &, ca rend la main au script1 et les deux vont s'exécuter "en même temps".
Par contre pour l'écriture c'est autre chose. Ils peuvent s'exécuter "en  même temps" mais écrire tous les deux dans le terminal pour cela, il faut rendre muet le cript2 avec cette redirection.

Edit : ah oui, pour la troisième réponse :
& va lancer le script en arrière plan et continuer
&& va attendre que le script ait finit correctement pour continuer sinon il va s'arréter. Tu peux regarder le code de retour de la dernière fonction avec $?

Dernière modification par Zouk (Le 14/07/2009, à 19:22)

Hors ligne

#8 Le 14/07/2009, à 19:59

Black Star

Re : Besoins d'aide pour Bash

Ok merci pour la réponse bien détaillée wink

J'ai essayé mais ça merdouille toujours en apparaissant dans le même terminal, mais je vais ressayer j'ai mal du faire un truc, je repasse ici pour tenir au courant d'où j'en suis wink

Hors ligne

#9 Le 14/07/2009, à 20:40

Black Star

Re : Besoins d'aide pour Bash

Vraiment désolé pour le double post mais c'est pour dire que j'ai trouvé comment faire, c'est en partie grâce à a réponse Zouk.

En fait j'ai fait des recherches et j'ai trouvé des trucs parlant de redirection entre les terminals et donc en combinant avec ta réponse j'ai mis ça dans mon Script_1 :

./Script_2 &> /dev/pts/1

Et là ce qui s'affiche est apparait bien dans le deuxième terminal, il me reste juste un petit truc à régler c'est que dans mon Script_2 il y a une instruction où je dois entrer mon mot de passe utilisateur et l'instruction pour entrer le mot de passe apparait dans le terminal du Script_1 elle par contre.

Hors ligne

#10 Le 14/07/2009, à 20:40

Zouk

Re : Besoins d'aide pour Bash

Black Star a écrit :

Ok merci pour la réponse bien détaillée wink

Pas de problème smile

Black Star a écrit :

J'ai essayé mais ça merdouille toujours en apparaissant dans le même terminal, mais je vais ressayer j'ai mal du faire un truc, je repasse ici pour tenir au courant d'où j'en suis wink

Peut être que je me suis trompé de redirection mais normalement &> redirige bien la stdout et la stderr. Essaie juste > si ca marche pas (ca redirige uniquement la sortie normale) mais je comprend pas pourquoi hmm

Hors ligne

#11 Le 14/07/2009, à 21:35

Black Star

Re : Besoins d'aide pour Bash

Bon je reviens rapporté mes expériences (ratées ?) ^^"

En fait le code de tout à l'heure qui fonctionnait :

./Script_2 &> /dev/pts/1

Il a fonctionné car le programme qui executé cette commande était fini après cette commande il ne continue pas, par contre là j'ai essayé le même code dans un programme qui doit encore fonctionner après cette instruction et en effet le programme continu bien par contre celui que je lance ne se lance pas lui...

Il doit y avoir un rapport avec ce que vous avez raconté avec les histoires de programme qui se lance en tache de fond et tout grâce au symbole : &

EDIT : dans ton exemple tu dis :
script2 &> /dev/null &

Le dernier & a une grande importance ?

Dernière modification par Black Star (Le 14/07/2009, à 21:38)

Hors ligne

#12 Le 14/07/2009, à 23:44

Totor

Re : Besoins d'aide pour Bash

bonsoir,

que veux-tu exactement :
- que script2 soit exécuté en parallèle dans un second terminal pour séparer l'affichage du script 1 et du script 2 ?
- lancer script2 en parallèle et peu importe son l'affichage (donc le supprimer) ?

hypothèse 1 :

gnome-terminal -e "<path>/script2;read -p \"Appuyer sur [ENTRER] ...\";exit" &

hypothèse 2 :
Il s'agit de la solution déjà évoquée :

<path>/script2 &>/dev/null &

Effectivement, le & à la fin est très important si tu veux que script1 continu son traitement.

Dernière modification par Totor (Le 14/07/2009, à 23:45)


-- Lucid Lynx --

Hors ligne

#13 Le 14/07/2009, à 23:47

Black Star

Re : Besoins d'aide pour Bash

Totor a écrit :

bonsoir,

que veux-tu exactement :
- que script2 soit exécuté en parallèle dans un second terminal pour séparer l'affichage du script 1 et du script 2 ?

Oui c'est exactement ça que je veux, merci pour le code je vais essayer. Merci merci smile

Hors ligne

#14 Le 15/07/2009, à 17:20

Black Star

Re : Besoins d'aide pour Bash

Encore double post mais c'est pour donner des nouvelles et remercier les personnes qui m'ont aidé smile

J'ai un peu modifier le premier code que tu m'a passé Totor et maintenant ça marche nickel wink
Merci à tout ceux qui m'ont aider smile

Je reviendrai sans doute dans ce topic pour mes futurs problèmes ça évitera que j'en cré des tonnes ^^

Hors ligne