아래 파일이 맞고요.
pg_ctl -D ... 이렇게 되어 있지요.
그냥 -i가 아니고요 <-- 이건 postmaster에서 사용.
pg_ctl은 옵션을 줄려면 -o가 있어야 해요.
그래서 comment단 것 처럼 하면 됩니다.
pg_ctl -o "-i" -D ......
그럼 다음엔 저도 도움을 받을 수 있기를.....
-- 박병호 님이 쓰신 글:
>> 밑 pgaccess로 postgresql에 접속하는 거에 대해서 여러번
>> 질문했었습니다.
>> 그리고 수동으로 postgresql을 시작할 때 -i 옵션을 주니까
>> pgaccess로 postgresql에 접속을 할 수 있었습니다.
>>
>> 그런데 문제는 리눅스 부팅할 때마다 수동으로 할 수는 없고
>> 원래 있던 postgresql 시작 스크립트를 수정할려고 하니
>> 잘 안됩니다.
>> /etc/rc.d/init.d 디렉토리에 있는 postgresql이라는 스크립트를
>> 열어서 start() 를 보니 다음과 같았습니다.
>>
>> start(){
>> PSQL_START=$"Starting postgresql service: "
>>
>> # Check for older PGDATA location.
>> if [ -f /var/lib/pgsql/PG_VERSION ] && [ -d /var/lib/pgsql/base/template1 ]
>> then
>> export PGDATA=/var/lib/pgsql
>> else
>> export PGDATA=/var/lib/pgsql/data
>> fi
>>
>> # Check for the PGDATA structure
>> if [ -f $PGDATA/PG_VERSION ] && [ -d $PGDATA/base ]
>> then
>> # Check version of existing PGDATA
>>
>> if [ `cat $PGDATA/PG_VERSION` != '7.2' ]
>> then
>> SYSDOCDIR="(Your System's documentation directory)"
>> if [ -d /usr/doc/postgresql-$PGVERSION ]
>> then
>> SYSDOCDIR=/usr/doc
>> fi
>> if [ -d /usr/share/doc/postgresql-$PGVERSION ]
>> then
>> SYSDOCDIR=/usr/share/doc
>> fi
>> if [ -d /usr/doc/packages/postgresql-$PGVERSION ]
>> then
>> SYSDOCDIR=/usr/doc/packages
>> fi
>> if [ -d /usr/share/doc/packages/postgresql-$PGVERSION ]
>> then
>> SYSDOCDIR=/usr/share/doc/packages
>> fi
>> echo
>> echo -e $"An old version of the database format was found.\nYou need to upgrade the data format before using PostgreSQL.\nSee $SYSDOCDIR/postgresql-$PGVERSION/README.rpm-dist for more information."
>> exit 1
>> # This doesn't seem to do anything useful...
>> # else
>> # if echo "$TYPESET"|grep "declare -f success ()" >/dev/null
>> # then
>> # success "$PSQL_CHECK"
>> # else
>> # echo " [ OK ]"
>> # fi
>> # echo
>> fi
>>
>> # No existing PGDATA! Initdb it.
>>
>> else
>> echo -n $"Initializing database: "
>> if [ ! -d $PGDATA ]
>> then
>> mkdir -p $PGDATA
>> chown postgres.postgres $PGDATA
>> fi
>> # Make sure the locale from the initdb is preserved for later startups...
>> [ -f /etc/sysconfig/i18n ] && cp /etc/sysconfig/i18n $PGDATA/../initdb.i18n
>> # Just in case no locale was set, use en_US
>> [ ! -f /etc/sysconfig/i18n ] && echo "LANG=en_US" > $PGDATA/../initdb.i18n
>> # Is expanded this early to be used in the command su runs
>> echo "export LANG LC_ALL LC_CTYPE LC_COLLATE LC_NUMERIC LC_CTYPE LC_TIME" >> $PGDATA/../initdb.i18n
>> # Initialize the database
>> su -l postgres -s /bin/sh -c "/usr/bin/initdb --pgdata=/var/lib/pgsql/data > /dev/null 2>&1" < /dev/null
>> [ -f $PGDATA/PG_VERSION ] && echo_success
>> [ ! -f $PGDATA/PG_VERSION ] && echo_failure
>> echo
>> fi
>>
>> # Check for postmaster already running...
>> pid=`pidof -s postmaster`
>> if [ $pid ]
>> then
>> echo $"Postmaster already running."
>> else
>> #all systems go -- remove any stale lock files
>> rm -f /tmp/.s.PGSQL.* > /dev/null
>> echo -n "$PSQL_START"
>>
>> =========================
>> su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl -D $PGDATA -p /usr/bin/postmaster start > /dev/null 2>&1" < /dev/null
>> ==========================
>>
>> sleep 1
>> pid=`pidof -s postmaster`
>> if [ $pid ]
>> then
>> success "$PSQL_START"
>> touch /var/lock/subsys/postgresql
>> echo $pid > /var/run/postmaster.pid
>> echo
>> else
>> failure "$PSQL_START"
>> fi
>> fi
>> }
>>
>> 스크립트는 잘 모르지만 뚫어지게 보면 ==== 표시 가운데가 결정적으로
>> postgresql을 시작하는 부분이고 요기에 -i 옵션을 주어야 할 것 같은데
>> 적당한데 -i 옵션을 넣으면 시작을 하지 않습니다.
>>
>> wrox 에서 나오는 beginning database with postgresql 을 보면
>>
>> su -l postgres -c "nohup /usr/local/pgsql/bin/postmaster -i -D /usr/local/pgsql/data 줄줄줄
>>
>> 이라고 나옵니다.
>>
>> 차이는 위에 pg_ctl을 사용했고 아래는 postmaster를 사용했는데
>> 이건 어떤 차이가 있는 건지 또 궁금하구요?
>>
>> 암튼 -i 옵션을 어떻게 넣으면 좋을까요?
|