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 :

Empécher l'exécution d'un script jusqu'à sa fin pour le relancer


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Points : 9
    Points
    9
    Par défaut Empécher l'exécution d'un script jusqu'à sa fin pour le relancer
    existe t'il un moyen d'empecher le lancement d'un script shell jusqu'à sa fin s'il est deja en cours d'execution ?

    Merci pour votre retour

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    oui.
    Ctrl-C
    kill
    pkill

    plus de détails.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Points : 9
    Points
    9
    Par défaut
    le script peut être lancé par plusieurs users, je veux qu'il soit bloqué durant son exécution.

    c'est à dire que si le user 1 lance le script, le second ne devrait pas avoir la main de lancer sauf si la première exécution s'arrête.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    il suffit le script vérifie qu'il n'est pas dans la liste des processus en cours.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut
    Il est préférable de passer par un service que les utilisateurs lancent par un simple start qui assurera l'exclusion mutuelle.

    http://doc.ubuntu-fr.org/services

    Contrôler les processus par le nom de leur script n'est pas sûr du tout. Le processus peut être lancé juste après le test (d'une seconde instance) avant que dans la table des proc le premier processus ne soit identifié par le nom du script. (j'ai vu ce comportement sous AIX ... je ne sais pas si linux propose une solution plus fiable)

    Sinon il est aussi possible d'utiliser un fichier lock dont la présence indique que le processus est actif ou non.

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Citation Envoyé par mvvvv Voir le message
    Il est préférable de passer par un service que les utilisateurs lancent par un simple start qui assurera l'exclusion mutuelle.
    Malheureusement, il suffit que l'utilisateur lance le binaire a la main pour que tu te retrouves avec deux instances.

    Citation Envoyé par mvvvv Voir le message
    Sinon il est aussi possible d'utiliser un fichier lock dont la présence indique que le processus est actif ou non.
    En cas de crash du processus, le fichier de lock reste, et doit etre nettoye a la main.

    La seule maniere propre et auto-nettoyante est l'ouverture d'une socket sur un port en particulier. Lors du lancement, le processus verifie s'il peut se binder au port ou non : oui, il se lance ; non, il s'arrete.
    En cas de crash, les sockets sont automatiquement nettoyees par le systeme (timeout de 2 minutes dans le pire des cas, qui peut etre supprime dans les options de l'ouverture de socket).
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut
    pour le service il faut que le binaire ne soit executable que par sys ... mais effectivement ce n'est pas son rôle et cela peut poser des problèmes de droits d'utilisateur.

    En cherchant un peu je viens de découvrir flock ça a l'air pas mal du tout. je regarde comment ça marche.

    EDIT :

    Donc apparemment il suffit de faire (dans le script à rendre exclusif ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    flock -nx 9 -c 'read toto;echo "bonjour $toto !!"'
    Le mutex est bien libéré si le process est killé violamment.

    C'est génial ce truc !

Discussions similaires

  1. F5 et empêcher l'exécution du script déjà effectué
    Par Tchupacabra dans le forum Langage
    Réponses: 7
    Dernier message: 13/09/2011, 14h28
  2. Empêcher l'exécution d'un script PHP depuis le web
    Par anxious dans le forum Langage
    Réponses: 12
    Dernier message: 25/03/2010, 15h01
  3. Le temps d'exécution de vos scripts perl!!
    Par djibril dans le forum Langage
    Réponses: 5
    Dernier message: 17/06/2009, 10h42
  4. Empêcher l'exécution de script (php, python ou autre)
    Par okparanoid dans le forum Apache
    Réponses: 8
    Dernier message: 29/07/2008, 21h16
  5. Réponses: 4
    Dernier message: 10/11/2005, 12h48

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