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

Linux Discussion :

Un kill dans un script shell qui arrête le script


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 4
    Points : 8
    Points
    8
    Par défaut Un kill dans un script shell qui arrête le script
    Cher amis développeurs,

    Je me tourne vers vous car je bloque complétement sur un problème de script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    #!/bin/sh
     
    BDD=$1
     
    kill `ps ax | grep $BDD | grep -v grep | awk '{print $1}'`
     
    /opt/pgsql/bin/dropdb $BDD
    Le but de ce script étant donc de déconnecter tous les users d'une base de données ( utile surtout pour les connexions "fantômes" ) et de supprimer cette base de données.

    Cependant, lorsque j’exécute le script, il me met "complété" et quitte le script ( il n’exécute pas ce qu'il y a après le kill ).

    J'ai essayé de lister les processus dans un fichier et avec un "read line" de les tuer mais j’obtiens le même problème.

    On dirai qu'il tue aussi le PID du script.

    Pour information, l'OS est un debian et la base de données est Postgres 8.4.

    Merci pour votre aide et si vous n'avez pas de réponse merci d'avoir pris le temps de me lire.

  2. #2
    Membre du Club Avatar de aysheaia
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 19
    Points : 63
    Points
    63
    Par défaut
    Chez moi (Ubuntu), cette procédure fonctionne (les processus de connexion à la base appartenant au compte postgres, le script de suppression étant lancé par le compte postgres et la commande dropdb étant dans /usr/bin/)

    ça doit être sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /opt/pgsql/bin/dropdb $BDD
    que ça bloque chez toi. Il n'y a pas de messages d'erreur ?

  3. #3
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    parceque ton script est tué effectivement donc il faut que tu révises ta selection des pid à tuer.

    sois moins permissif.

    ton paramettre 1 et le nom de BDD donc ta ligne de commande contient $1 donc ton script est tué tout est normal.

    tu peux éliminer le problème en dans ta selection

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 4
    Points : 8
    Points
    8
    Par défaut
    Merci pour vos réponses je vais regarder ça et je vous tiens au courant

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 4
    Points : 8
    Points
    8
    Par défaut
    Parfait ça fonctionne super.

    Alors, pour tous ceux qui veulent un script qui déconnecte (kill) toutes les connexion sur une base Postgres, il suffit de créer un shell qui contiendra ce code :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #!/bin/sh
     
    BDD=$1
     
    kill `ps ax | grep $BDD | grep -v $0`

    et d’appeler ce shell en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sh nomDeMonShell.sh  nomDeMaBase
    Merci à Frp31 pour son aide.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/06/2012, 21h40
  2. Réponses: 0
    Dernier message: 03/06/2008, 11h44
  3. Script shell qui appelle méthode Java ?
    Par babyboy dans le forum Linux
    Réponses: 3
    Dernier message: 17/08/2007, 01h45
  4. Script Shell qui lance un programme sur un ordi distant avec SSH
    Par bilibou dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 02/06/2007, 11h18
  5. Script shell qui change le repertoire courant
    Par Estats dans le forum Linux
    Réponses: 4
    Dernier message: 17/11/2005, 14h17

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