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 :

Lancement unique d'un script


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 35
    Par défaut Lancement unique d'un script
    Bonjour,

    Contexte: Programmation shell sous UNIX

    Le problème: Mon script ne doit pas pouvoir être relancé si il est déjà en cours.

    La solution: créer un fichier temporaire au lancement du script après vérification de son existence (ou mettre le numero du process etc...)
    mais ca ne me plait pas beaucoup de creer un fichier.

    Utilisé la commande "ps" me tente plus.
    mais tous les scripts ont pour nom "-ksh" ce qui ne me permet pas de filtrer sur le processus correspondant à mon script.

    Sachant que je n'ai pas de droit root sur les serveurs (pas de modification de conf possible), comment puis-je faire?
    Peut-on tagger le nom d'un processus au lancement afin d'utiliser un ps et un grep sur le tagg?

    Merci d'avance!

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    ben ton script il lance une application ou il est autonome ??

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    tu peux si tu veux juste faire un "touch nom_du_script_demarre" dans /tmp, et ta première instruction du script serait "if /tmp/nom_du_script_demarre existe" exit ..

    Et si tu as fini ton scirpt, sa dernière instruction est "rm -f .."

    Non ?

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Utiliser une variable du shell pour enregistrer l'état d'exécution du script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if [[ -n "${SCRIPTENCOURS} ]]
    then
      echo "$0 déjà en cours d'exécution"
    else
      export SCRIPTENCOURS=$$
      # ... Traitement à effectuer 
      undef SCRIPTENCOURS
    fi
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Par défaut
    La méthode assez utilisée , c'est la création d'un fichier de lock dans /var/lock par exemple

    Au début du script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if [[ -d /var/lock/mon_programme.lock ]]
    then
        echo "script déja en cours"
        exit 255
    else
        touch /var/lock/mon_programme.lock
    fi
    et à la fin de ton script avant un exit ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rm /var/lock/mon_programme.lock

  6. #6
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 35
    Par défaut Merci à tous
    Je vais utiliser la solution de "al1_24" car il n'utilise pas de fichier temporaire et c'est ce qui m'interressait. Merci encore à tous pour votre rapidité!

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    si tu veux mais c'est moins sûr : il faut que cette variable soit définie pour TOUS les utilisateurs, dans les .xxxrc ... et un script lançant un autre script peut ne pas l'exécuter..

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

Discussions similaires

  1. lancement à distance d'un script
    Par rastoix dans le forum Windows
    Réponses: 6
    Dernier message: 24/01/2007, 13h31
  2. Lancement automatisé d'un script à un temps donné
    Par denn dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 11/10/2006, 11h04
  3. Lancement automatique d'un script
    Par bobatel dans le forum Langage
    Réponses: 2
    Dernier message: 04/05/2006, 08h43
  4. Lancement automatique d'un script
    Par srvremi dans le forum Oracle
    Réponses: 2
    Dernier message: 13/10/2005, 10h45

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