2012-05-24 3 views
2

J'ai trouvé que postgresql v9.0.7 s'exécute en mode bg par défaut quand il est démarré (commande ci-dessous). Plus tôt, lorsque nous utilisions postgresql v7.4.2, il fonctionnait en mode de premier plan. J'utilise l'environnement freebsd 8.2 64 bits. Postgresql v9.0.7 est construit avec les options WITHOUT_XML, WITHOUT_GETTEXT et WITHOUT_GNUGEOPT.Postgresql 9.0 fonctionne en bg par défaut

c670e04: rkananth 16]/usr/local/bin/postgres --version postgres (PostgreSQL) 9.0.7

c670e04:rkananth 7] setenv PGDATA /data/db/postgres/ 
c670e04:rkananth 11] /data/bin/runas pgsql /usr/local/bin/postgres 
c670e04:rkananth 12] ps -A | grep post 
65165 ?? Ss  0:00.01 /usr/local/bin/postgres 
65167 ?? Ss  0:00.00 postgres: writer process (postgres) 
65168 ?? Ss  0:00.00 postgres: wal writer process (postgres) 
65169 ?? Ss  0:00.00 postgres: autovacuum launcher process (postgres) 
65170 ?? Ss  0:00.00 postgres: stats collector process (postgres) 
65224 0 S+  0:00.00 grep post 

c670e04:rkananth 14] ps -p 65165 -o ppid 
PPID 
    1 
c670e04:rkananth 15] ps 1 
    PID TT STAT  TIME COMMAND 
    1 ?? SLs 0:00.17 /sbin/init -- 
c670e04:rkananth 16] 

Existe-t-il un moyen où je peux le forcer à venir au premier plan?

En regardant également le journal ci-dessus, cela montre que le parent du processus serveur est défini sur 1 (init) est-ce un comportement attendu lorsque le serveur fonctionne en mode bg? Cependant, la documentation de 9.0.7 indique que, par défaut, elle devrait être au premier plan. Pourquoi cela ne se produit-il pas dans mon cas, peut-être un bug?

Mise à jour 1: /data/bin/runas n'introduit aucun changement de comportement, testé sans elle. Le même comportement est également visible dans v8.3 et sur l'environnement 32 bits FreeBSD 7.2.

Le processus serveur devenant enfant de PID 1 (init) ressemble à un comportement standard d'une application s'exécutant en tant que démon.

Ma question est maintenant - Y a-t-il un moyen de demander à Postgres de ne pas fonctionner en tant que démon?

Mise à jour 2: Got la solution est la config « silent_mode = off » (Par défaut, il est activé) va le faire pour exécuter au premier plan et le processus fonctionne comme processus enfant de la coquille. Avec cela, la question est répondue. (Source - http://postgresql.1045698.n5.nabble.com/BUG-4381-Postgresql-daemon-won-t-stay-in-the-foreground-td2127518.html)

+0

Je suis curieux (je n'ai pas vraiment d'expérience avec * nix): quelle différence cela fait-il? –

+0

Il ne le fait pas sur linux, auto-compilé. Êtes-vous sûr à 100% que '/ usr/local/bin/postgresql' est le binaire postgres réel et non un wrapper?Et est-ce auto-compilé ou pré-compilé? –

+0

Daniel: Je suis sûr à 100% que/usr/local/bin/postgresql est le bon binaire. J'ai testé sur l'installation auto-compilée ainsi que l'installation via les ports. Le même comportement est vu. –

Répondre

2

En effet, postgres devrait rester au premier plan, comme indiqué dans la page:

Par postgres par défaut commence au premier plan et impressions journal messages dans le flux d'erreur standard. Dans les applications pratiques postgres devrait être démarré comme un processus d'arrière-plan, peut-être au temps de démarrage.

La commande runas est probablement ce qui démonise le processus postgres. Essayez d'exécuter postgres d'une coquille a commencé comme pgsql utilisateur:

root# su - pgsql 
pgsql$ setenv PGDATA /data/db/postgres/ 
pgsql$ /usr/local/bin/postgres 

Vous pouvez également essayer avec su(1) et sudo(8) si vous ne voulez pas l'idée d'un shell en tant pgsql utilisateur.

Maintenant, je me demande pourquoi vous avez besoin de postgres pour s'exécuter au premier plan. Avez-vous vraiment une bonne raison?

+0

runas ne démonise pas à coup sûr. C'est notre façon de faire exactement ce que vous avez mentionné. Je veux qu'il soit au premier plan parce que nous avons un chien de garde qui surveille le PID du shell où cette commande est exécutée, quand bg, shell est terminé et watchdog pense que le serveur est mort et essaie de redémarrer et échoue (car le serveur fonctionne déjà) –

Questions connexes