Précédent   Forum des professionnels en informatique > Systèmes > Linux
Linux Forum d'entraide sur le système Linux. Avant de poster -> Tutoriels Linux, F.A.Q Linux
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/07/2011, 01h35   #1
Invité régulier
 
Inscription : juillet 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 4
Points : 6
Points : 6
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 :
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.
woodruff28 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/07/2011, 08h37   #2
Membre du Club
 
Avatar de aysheaia
 
E L
Inscription : juin 2011
Messages : 19
Détails du profil
Informations personnelles :
Nom : E L
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 19
Points : 62
Points : 62
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 :
1
2
 
/opt/pgsql/bin/dropdb $BDD
que ça bloque chez toi. Il n'y a pas de messages d'erreur ?
aysheaia est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 03/07/2011, 08h44   #3
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
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 : 3 534
Points : 7 743
Points : 7 743
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
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/07/2011, 11h38   #4
Invité régulier
 
Inscription : juillet 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 4
Points : 6
Points : 6
Merci pour vos réponses je vais regarder ça et je vous tiens au courant
woodruff28 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/07/2011, 22h32   #5
Invité régulier
 
Inscription : juillet 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 4
Points : 6
Points : 6
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 :
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 :
1
2
 
sh nomDeMonShell.sh  nomDeMaBase
Merci à Frp31 pour son aide.
woodruff28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h14.


 
 
 
 
Partenaires

Hébergement Web