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

Administration PostgreSQL Discussion :

Problème avec script de démarrage


Sujet :

Administration PostgreSQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 12
    Points
    12
    Par défaut Problème avec script de démarrage
    Bonjour,

    Je travaille avec une version de PostGreSQL 8.3.6 sur une RHEL 5 64bits.

    J'ai mis en place un script d'arrêt relance pour automatiser les taches administratives. Ce script fonctionne très bien lorsqu'il est lancé à la main mais lorsqu'il est lancé par un ordonnanceur ( crontab par exemple) j'ai le message d'erreur suivant :
    pclose failed: Aucun processus enfant
    The program "postgres" is needed by pg_ctl but was not found in the
    same directory as "/logiciels/postgres/8.3.6/bin/pg_ctl".
    Check your installation.
    La ligne de commande utilisée pour démarrer la base est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ${PGPATH}/bin/pg_ctl start -w -l \"${PGLOGDIR}/startup.log\"
    si je rajoute l'option "-p ${PGPATH}/bin/postgres" , le message d'erreur évolue en :
    pg_ctl: could not start server: exit code was -1
    Je suis complétement perdu étant donné que ça fonctionne parfaitement lorsque lancé depuis un terminal. L'utilisateur utilisé pour lancer ces commandes est bien évidemment le même dans tous les cas.
    Le log startup.log est vide.

    Merci pour votre aide.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    L'environnement d'un programme lancé par crontab est minimal. Parfois il suffit dans la ligne de lancement de lire le ou les fichiers d'init:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #crontab
    source $HOME/.profile; ... la commande elle-même
    Sinon il y a une méthode générique sous linux pour trouver la raison de ce genre de problème, c'est d'utiliser strace -f. Ca produit un fichier de log de tous les appels système, ensuite il faut chercher dedans la séquence d'appels système qui ne passe pas comme elle devrait. On peut aussi comparer une exécution réussie d'une exécution ratée.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Merci pour ces premières pistes.

    J'ai commencé par faire une comparaison de l'environnement dans lequel est exécuté le script (en manuel et en auto). Je n'ai pas noté de différence significative. J'ai aussi bien vérifié le PATH, toutes les entrées y sont.

    Prochaine étape un strace histoire de voir où ça nous mène, mais l'analyse risque d'être un peu plus longue.

    J'ai oublié de préciser que ce script fonctionne bien sur un autre serveur, même lancé via ordonnanceur. Les différences entre les serveurs sont je crois OS 32 bits et Postgres installé par un binaire au lieu d'être compilé à partir des sources.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Salut,

    Je n'ai rien trouvé de concluant avec strace. Aucun message d'erreur pertinent.

    En réfléchissant, je me demande si le fait de l'installer à partir des source ne pourrait pas être la cause du problème ? Existe-t-il des options de compilation ou bien des modifications à faire au système ?

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    S'il n'était pas compilé correctement, il ne lançerait pas non plus à la main dans un shell alors que là c'est seulement par cron.
    Eventuellement met le résultat compressé de strace en attachement s'il n'est pas trop gros, celui de l'exécution par cron qui aboutit à une erreur.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Désolé pour mon manque de réponse hier, j'étais en déplacement.
    Voici donc en pièce jointe les deux traces. Je suis content que vous preniez le temps de regarder. N'ayant pas l'habitude de ce genre de log, je crains d'avoir loupé un truc.

    Merci
    Fichiers attachés Fichiers attachés

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Hélas on ne voit pas clairement dans ces traces un échec du type fichier non trouvé ou échec de lancement d'un sous-processus.
    Ce qui transparait quand même c'est que l'environnement n'est pas identique. Par exemple il semble qu'en lancement manuel le HOME soit /exploit/postgres alors qu'en lancement automatique c'est /home/postgres
    Si c'est le même utilisateur, comment expliquer cette différence?

    Autre remarque, le nom du fichier de log mériterait d'être simplifié:

    execve("/logiciels/postgres/actual/bin/pg_ctl", ["/logiciels/postgres/actual/bin/p"..., "start", "-w", "-l", "\"/log/postgres/startup.log\""], [/* 53 vars */]) = 0
    S'il s'agit de l'avoir dans /log au final, il faut supprimer ces apostrophes et antislashes.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Je suppose que la différence au niveau de la HOME provient du fait qu'en manuel je devais être en /exploit/postgres. Mais pour info je viens de retester le script en étant dans /home/postgres (en manuel) et cela ne change rien.

    J'en ai aussi profité pour valider la suggestion pour simplifier le chemin vers les logs. Il n'y a plus d'antislash ni de guillemets.

    Pas encore testé en automatique mais je n'ai que peu d'espoir pour le moment.

    Merci en tout cas pour le coup d'œil.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    J'ai fini par trouver une solution au problème. Il semble que le souci était lié à mon script bien que je ne comprenne pas bien quoi exactement.

    Si comme moi vous avez des soucis avec l'arrêt-relance, je ne peux que vous rediriger vers ce script qui a solutionné mes problèmes:
    Script d'arrêt relance PostGreSQL

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

Discussions similaires

  1. [eCommerce] Avec script panier.php
    Par midnnight dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 18/05/2008, 16h35
  2. problème avec script/generate scaffold
    Par Blaede dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 11/03/2008, 01h40
  3. problème avec script d'upload : variables indéfinies
    Par wilikev dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 17/10/2007, 12h26
  4. [SQL] Problème avec script de pagination et requête sql sur deux tables
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/06/2006, 14h06
  5. [MS-DOS] Problème avec Script
    Par bliml dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 24/05/2005, 13h52

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