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

Shell et commandes GNU Discussion :

Stopper un script avec une boucle lancée avec la commande at


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Stopper un script avec une boucle lancée avec la commande at
    Bonjour,

    Je cherche à stopper un script comprenant une boucle que je lance avec la commande at:

    exemple de script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while :
    do
    mytime=$(date "+%j:%T")
    mkdir $mytime
    sleep 395
    done
    et je le lance de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    at 12:34
    ./monscript.ksh
    Comment puis je stopper cette boucle infinie une fois que le script a commencé son exécution?

    Merci d'avance
    Jonathan

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    Bonjour,

    Comment puis je stopper cette boucle infinie une fois que le script a commencé son exécution?
    comme n'importe quelle autre commande : en récupérant son PID, et en tuant le processus correspondant.

    sleep peut cependant empêcher de tuer un script.
    il est possible de le passer en arrière plan, et d'attendre la fin de son exécution :.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 717
    Points
    12 717
    Par défaut
    Bonjour,
    Je ne savais pas que sleep peut empêcher l’arrêt d'un script, pour moi au pire, on envoie le signal d’arrêt au script et celui-ci s'arrêtera à la fin du sleep.

    Sinon, ici, la bonne question serait plutôt de savoir dans quelles conditions on désire arrêter ce script ?

    Au pire, celui-ci pourrait vérifier l'existance d'un fichier et si celui-ci existe alors il s'arrête...
    Cordialement.

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour,

    faire une boucle infinie qui en fait n'est pas infinie montre un problème de conception.

    L'évènement qui fait arrêter la boucle est-il déterminable à l'intérieur de la boucle ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci pour vos réponses,
    j'ai fait une boucle infinie juste pour l'exemple.
    Le vrai script permet en fait de faire tourner un calcul sur une machine à distance et affiche le statut toutes les 30 secondes, jusqu'à l'existance d'un résultat et si le calcul met plus de 2 heures s'arrête car il y a probablement une erreur.

    si je lance le script avec
    ./monscript.ksh


    je fais ctrl+z pour l'annuler et kill -9 $process

    si par contre je lance le script avec la commande at.

    une fois la commande exécuté, je ne sais pas comment annuler son exécution car
    at -r $tacheID
    ne fonctionne plus puisque la commande ./monscript.ksh a déjà été lancée.

    Merci d'avance pour votre aide

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    ctrl+z n'annule pas. Il met en pause.

    Sinon, tout a été dit. Il n'y a plus qu'à faire le script qui lance le calcul en arrière plan et qui envoi un kill au bout de 2 heures s'il n'est pas fini.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Le script a déjà cette fonction de s'arrêter après 2h.
    Ce que je voudrais c'est pouvoir stopper le script après 50 minutes si je me rends compte qu'une des données d'entrées est fausse.

    Je cherche en fait comment trover le PID et un genre de kill -9 pour les programmes lancés via la commande at.

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par jenoyend Voir le message
    je le lance de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    at 12:34
    ./monscript.ksh
    Comment puis je stopper cette boucle infinie une fois que le script a commencé son exécution?
    Si tu es sûr qu'il ne peut y en avoir qu'un seul:

Discussions similaires

  1. [XL-2010] Countif sur une plage définie avec une boucle
    Par klash384 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/01/2015, 16h57
  2. afficher les paramètres d'un script shell avec une boucle for
    Par nakatami dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 15/03/2011, 19h21
  3. Réponses: 3
    Dernier message: 07/02/2011, 10h04
  4. Réponses: 2
    Dernier message: 29/07/2010, 15h16
  5. Generer des noms de variables avec une boucle
    Par moutanakid dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/07/2004, 17h45

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