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 :

.bat lancé 2 fois de manière très proche, les 2 exécutions entrent en concurrence : la 2ème arrête la 1ère [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Par défaut .bat lancé 2 fois de manière très proche, les 2 exécutions entrent en concurrence : la 2ème arrête la 1ère
    bonjour,
    l'essentiel est dans l'objet du message

    .bat lancé 2 fois de manière très proche, les 2 exécutions entrent en concurrence : la 2ème arrête la 1ère

    existe t il un moyen d'attendre la fin de l'exécution du premier appel pour exécuter le second ? (lancés par taches planifiées - impossible de connaitre/estimer le temps d'exécution)

    ou de faire patienter la seconde exécution pendant que la première finit de s'exécuter ?

    merci d'avance

  2. #2
    Membre éprouvé

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Par défaut
    Bonjour,

    Ce que je te propose:
    Quand ton batch se lance, il exécute une boucle d'attente qui vérifie si un nom de fenêtre est actuellement affiché. Si ce nom de fenêtre existe, on relance la boucle. on peut faire sa avec tasklist /FI ou avec la commande externe nircmd.exe

  3. #3
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut
    Oui ou tu peux utiliser un flag quelconque(fichier, variable d'environnement) pour indiquer que ton batch est en cours.

    Ce qui donnerait :
    Lancement Batch 1
    - Maj Flag -> ok
    - Traitement
    - Suppr Flag

    Lancement Batch 2
    - Maj Flag -> nok car flag existant
    - Boucle jusqu'à ce que Maj Flag ok
    - Traitement
    - Suppr Flag

  4. #4
    Membre éprouvé

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Par défaut
    cette option est plus simple mais moins fiable (si le système redémarre pendant l’exécution d'un batch, ou si un batch est interrompu manuellement ou plante pour une quelconque raison, le "flag" restera et les batchs seront en attente indéfiniment)

  5. #5
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut
    Bien sur j'aurais du le préciser.

    En général toutes les solutions à base de flag sont dotées d'un timeout pour éviter ce genre de situations.

  6. #6
    Membre éprouvé

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Par défaut
    comment tu gère un timeout dans ce cas ? (sa m’intéresse ^^)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Par défaut intéressantes propositions
    merci pour ces intéressantes propositions,
    je ne m'attendais pas à ce genre de solutions
    mais plutot une option d'exécution
    au plaisir de vos futures explications

  8. #8
    Membre Expert Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut
    Citation Envoyé par Cmanix Voir le message
    comment tu gère un timeout dans ce cas ? (sa m’intéresse ^^)
    Tu définis un nombre d'itérations max de ta boucle d'attente.
    Après tout est dans la définition du nombre max. Ca dépend du traitement et de la criticité. Le mieux et de rendre cela paramétrable histoire de pouvoir changer en cas de souci.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    IterMax = 10
    TempsIter = 30 secondes
    Iter = 0
    
    Tant que Iter++ < IterMax && Flag Existe 
    Faire
    .     Sleep TempsIter
    Fin

  9. #9
    Membre émérite Avatar de gretch
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2006
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 165
    Par défaut
    (lancés par taches planifiées - impossible de connaitre/estimer le temps d'exécution)
    et un fichier bat qui executerais 2(ou plus) fichier batch ?

    exemple : tes 2 scripts ; "1.bat" et "2.bat" et un script "maitre.bat"
    Code maitre.bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    start /wait 1.bat
    start /wait 2.bat

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Par défaut merci pour toutes ces propositions
    je résume :

    1 - test la présence d'un batch connu en listant les fenetres ouvertes
    2 - boucle d'attente avec test de sortie sur une variable globale (+ timeout de sécurité)
    3 - batch maitre pour lancer successivement les batch esclaves (avec une seule tache planifiée)

    Évidemment, tout cela est à considérer avec l'arrêt prématuré du batch en question et de sa reprise pour compléter le travail : je crois que le test de la présence d'un fichier de log et de sa date de création doit être une bonne piste

    Meci encore pour vos contributions et bonnes fêtes de fin d'année

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Action lancée deux fois
    Par mmahouac dans le forum Struts 1
    Réponses: 1
    Dernier message: 30/01/2009, 22h58
  2. Réponses: 2
    Dernier message: 27/12/2008, 17h47
  3. script python lancé plusieurs fois
    Par devconf77 dans le forum Général Python
    Réponses: 2
    Dernier message: 03/05/2007, 17h27
  4. [Oracle 9.1] Opérations sur tables très proches...
    Par ftrifiro dans le forum Oracle
    Réponses: 7
    Dernier message: 10/10/2005, 14h10
  5. [API WIN] Eviter qu'un prog se lance 2 fois...
    Par asher256 dans le forum Windows
    Réponses: 2
    Dernier message: 07/10/2005, 15h58

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