dポイントプレゼントキャンペーン実施中!

見ていただいてありがとうございます!

SuSE LinuxでpostgreSQLの自動起動が設定できず
困っております。
ヒントでもかまいませんので、
ご教授いただきたく思っております。

postgreSQLのインストールはソースから行いました。
ログイン後なら、以下のコマンドを実行することで
起動することは可能な状態です。
#su - postgres
#/usr/local/pgsql/bin/postmaster -i -D /usr/local/pgsql/data> logfile 2>&1 &

■自動起動させるために行ったこと
1.自動起動スクリプトファイル
"/usr/local/src/postgresql-8.3.3/cntrib/start-script/linux"
をディレクトリ"/etc/init.d/"にコピーしました。
2.自動起動スクリプトファイルを
「postgresql」にリネームし、
全員に実行権限を付与しました。
3."/etc/init.d/rc*.d"に以下の名前で
シンボリックリンクを作成しました。
 ・rc0.d、rc1.d、rc2.dに「K02postgresql」
 ・rc3.d、rc5.dに「S98postgresql」

現在、上記の操作をした状態となっておりますが、
rootでログインしてコマンド #pr -e を実行しても
「postmaster」の行があらわれません。
ちなみに、コマンド #chkconfig -list を実行すると
postgresqlの行の 3 と 5 がONになっています。

現在Linuxのことを勉強中ですので、
質問に情報不足などあるかもしれません。
ご指摘いただければ、至急追加情報を提示いたします。

よろしくお願いいたします!

A 回答 (3件)

SUSE と RedHat で起動スクリプトの構成が違っているようですね。



SUSE の設定ツール YaST の「システム」、「ランレベル・エディタ」
で起動設定するとどうなりますか。

# SUSE 知らなくて的外れだったようです。
# また /usr/local/pgsql/data/logfile にエラーメッセージが
# 出力されているかもしれません。
    • good
    • 1
この回答へのお礼

>SUSE の設定ツール YaST の「システム」、
>「ランレベル・エディタ」
>で起動設定するとどうなりますか。
自動起動するようになりました!

ご指摘どおり、自動起動しなかった状態で
「ランレベル・エディタ」を開いてみました。
ランレベル 3 と 5 のチェックボックスに
チェックが入っていたので「やっぱりダメかな~」と
思って、念のため(?)チェックボックスのOFF/ONを
一度だけやって「ランレベル・エディタ」を閉じました。
その後、再起動してみると自動起動しました!

"/etc/init.d" に起動スクリプトを配置して、
シンボリックリンクを作成するだけでなく、
他にも何か編集しないといけないファイル等が
あったのでしょうか…??
いろいろ調べてみることにします!

何はともあれ、解決しました!!
長々とお付き合い下さり、本当にありがとうございました!

P.S. 何か、コメント頂けるかもしれませんので、
もうしばらく締め切りにせず置いておきます!

お礼日時:2008/08/17 22:35

#/etc/init.d/postgresql start


で起動するのでしたら、サーバの起動時に問題なく自動起動すると
思うのですが、
# /etc/init.d/rc3.d/S98postgresql start

# /etc/init.d/rc5.d/S98postgresql start
でも起動するでしょうか。

また、サーバ起動時のコンソール画面や /var/log/messages に
PostgreSQL の起動エラーに関するメッセージは出てないでしょうか。

あと考えられるのは、postgresql 起動スクリプトが環境変数を
参照していて、root で実行するときにだけ設定されていると
いう場合です。

この回答への補足

再度、回答いただきましてありがとうございます!
頂きました回答にしたがって確認してみました。

>サーバ起動時のコンソール画面や/var/log/messages
サーバの起動時のコンソール画面には「PostgreSQL」関連のメッセージは見当たりませんでした。
また、"/var/log/message" で「postgre」を
検索してみましたが、起動時刻周辺には見つかりませんでした。

>postgresql 起動スクリプトが環境変数を参照
おそらく環境変数を参照はしていないとは思うのですが、
起動スクリプトを念のため文末に掲載します。
(先頭行以外の "#" に始まる行は省きました)


なお、文末の起動スクリプトは☆印の行で終了してしまう可能性が
あると思います。そこで、その直前に

echo "PostgreSQL"

という命令を加えた上で再起動してみました。
しかし、やはり起動時のコンソールにも、"/var/log/message" にも
「PostgreSQL」が現れませんでした。関係ないでしょうか?

勉強不足でもうしわけありません。
私の方で、もう少し調べてみることにします。

何かアドバイスがありましたら、よろしくお願いいたします!

◆◇起動スクリプト開始◇◆
#! /bin/sh
prefix=/usr/local/pgsql
PGDATA="/usr/local/pgsql/data"
PGUSER=postgres
PGLOG="$PGDATA/logfile"
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON="$prefix/bin/postmaster"
PGCTL="$prefix/bin/pg_ctl"

set -e

test -x $DAEMON || exit 0     …☆

case $1 in
start)
echo -n "Starting PostgreSQL: "
su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
echo "ok"
;;
stop)
echo -n "Stopping PostgreSQL: "
su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast"
echo "ok"
;;
restart)
echo -n "Restarting PostgreSQL: "
su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w"
su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
echo "ok"
;;
reload)
echo -n "Reload PostgreSQL: "
su - $PGUSER -c "$PGCTL reload -D '$PGDATA' -s"
echo "ok"
;;
status)
su - $PGUSER -c "$PGCTL status -D '$PGDATA'"
;;
*)
# Print help
echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2
exit 1
;;
esac

exit 0
◆◇起動スクリプト終了◇◆

補足日時:2008/08/17 01:11
    • good
    • 0
この回答へのお礼

すみません!補足内容に抜けがありましたので、
お礼欄になってしまいましたが、お知らせいたします!

># /etc/init.d/rc3.d/S98postgresql start
>や
># /etc/init.d/rc5.d/S98postgresql start
>でも起動するでしょうか。
はい。起動しました。


また質問を締め切る時に、
改めてお礼を投稿させていただきます!

お礼日時:2008/08/17 09:39

SuSE Linux は使ったことがありませんが、


/usr/local/src/postgresql-8.3.3/cntrib/start-script/linux
を root で実行すると、postmaster は起動しますか

この回答への補足

すばやいご回答、大変ありがとうございます!
そして返信が遅れてしまい、申し訳ありませんでした!

コマンドで
#/usr/local/src/postgresql-8.3.3/cntrib/start-script/linux start
を実行してみましたが、「Permission denied」でした。
そのファイルのパーミッションを確認すると、
rootにも実行権限はない状態でした。

なお、そのファイルを
(1) "/etc/init.d/" へコピーして
(2)「postgresql」にリネームして
(3)パーミッションで全員に実行権限を与えた
ファイルを実行するコマンド
#/etc/init.d/postgresql start
だと起動できました!

補足日時:2008/08/16 09:16
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!