postgresql v9.0.7 は、起動時にデフォルトで bg モードで実行されていることがわかりました (以下のコマンド)。以前、postgresql v7.4.2 を使用していたときは、フォアグラウンド モードで実行していました。
freebsd 8.2 64 ビット環境を使用しています。Postgresql v9.0.7 は、WITHOUT_XML、WITHOUT_GETTEXT、および WITHOUT_GNUGEOPT オプションを設定して構築されています。
c670e04:rkananth 16] /usr/local/bin/postgres --バージョン 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]
強制的に前面に出す方法はありますか?
また、上記のログを見ると、サーバー プロセスの親が 1 (init) に設定されていることがわかります。これは、サーバーが bg モードで実行されている場合に予想される動作ですか?
ただし、9.0.7 のドキュメントには、デフォルトではフォアグラウンドで表示されるはずであると記載されています。私の場合、なぜこれが起こらないのですか、バグかもしれませんか?
更新 1: /data/bin/runas は動作の変更を導入しておらず、それなしでテストされています。v8.3 および Freebsd 7.2 32 ビット環境でも同じ動作が見られます。
PID 1 ( init ) の子になるサーバー プロセスは、デーモンとして実行されるアプリケーションの標準的な動作のように見えます。
私の質問は - Postgres に Daemon として実行しないように指示できる方法はありますか?
更新 2: 構成 "silent_mode = off" (デフォルトではオン) がフォアグラウンドで実行され、プロセスがシェルの子プロセスとして実行されるという解決策が得られました。これで質問は答えられます。( ソース - http://postgresql.1045698.n5.nabble.com/BUG-4381-Postgresql-daemon-won-t-stay-in-the-foreground-td2127518.html )