IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Lancement de différents scripts par "vagues"


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 2
    Par défaut Lancement de différents scripts par "vagues"
    Bonjour,
    j'ai besoin de lancer une dizaine de scripts par vagues parallèles.
    J'essaye en vain depuis hier des combinaisons de start et de wait sans résultats.
    Pour essayer de faire ce que je veux j'utilise des petits scripts de test qui me permettent de vérifier si les exécutions sont bien en parallèle.

    Il s'agit de fichiers de type testx.bat (x entre 1 et 4) constitués de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @echo x
    @ping localhost -n 10 > nul
    @echo x
    @ping localhost -n 10 > nul
    @echo x
    @exit
    J'ai ensuite regroupé mes petits fichiers par vague, dans des fichiers test_vague1 ayant cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo off
    echo debut premiere vague
    start /B test1.bat 
    start /B test2.bat
    (test_vague2 faisant la même chose mais avec 3 et 4).

    Mon but c'est d'arriver à avoir les 1 et les 2 en parrallèles PUIS les 3 et les 4 en parralèle.

    Mon test final est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off
    echo debut du test
    start /B /Wait test_vague1.bat
    echo fin de la premiere vague
    start /B /WAIT test_vague2.bat
    echo fin de la deuxieme vague
    echo fin du test
    exit
    Or quand j'exécute ceci, il me fait bien les 1 et les 2 en parralèles, mais après il n'imprime jamais "fin de la première vague".

    J'ai déjà essayé avec des CALL au lieu des start /Wait mais cela ne marche pas (j'ai des 1, 2, 3 et 4 en meme temps)

    De plus, en haut de la fenêtre le nom des fichiers test1.bat et test2.bat restent visibles (comme des titres de la fenêtre), comme s'ils n'étaient pas finis, alors que test_vague1.bat n'apparait jamais. Je ne sais pas s'il y a lien mais je donne toutes les pistes possibles.

    Merci de votre future aide,

    Orwel.

    Edit :
    Voici l'avancement de mes recherches

    -> Apparemment ce que je cherche à faire se fait simplement sous bash avec la commande wait qui malheureusement n'existe pas sous Windows. Je ne pense pas pouvoir installer cygwin ou assimilé (...)

    -> Je pourrais également faire des effets de bords dans mes scripts (écriture/suppression de fichiers) et faire des boucles d'attente de ces effets entre chaque vague, mais une boucle infinie est assez gourmande niveau processeur non ? Ou est-ce que je me trompe, et cette solution serait équivalente à celle que je cherche à obtenir (niveau performance) avec start /wait ?

    -> Dans le cas ou j'utiliserais des effets de bords, mettre la boucle d'attente en parrallèle est-il une solution pour améliorer les performances ?

    -> L'utilisation de start /wait marche très bien quand un processus n'attends qu'un seul autre pour continuer (par exemple avoir les 1 PUIS des 2 et en parralèle avoir des 3 PUIS des 4). Le problème ici n'est pas le côté parralèle, mais bien de savoir que plusieurs processus parralèles sont finis.

  2. #2
    Membre expérimenté Avatar de plopi
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2011
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2011
    Messages : 191
    Par défaut
    Citation Envoyé par Orwel_Rilando Voir le message

    -> Apparemment ce que je cherche à faire se fait simplement sous bash avec la commande wait qui malheureusement n'existe pas sous Windows..
    sur les systèmes windows c'est :


  3. #3
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 2
    Par défaut
    Bonjour,
    le wait auquel je fais allusion permet d'attendre que tous les process en parallèle soit finis (ou alors je me trompe).

    Or sleep prends obligatoirement une période en attente non ? Je n'ai aucune idée du temps que peuvent mettre les différents scripts à s'exécuter.

Discussions similaires

  1. Lancement d'un script par cron avec cygwin
    Par dupdup dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 04/01/2008, 22h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo