|
|
- #!/bin/sh /etc/rc.common
- # Copyright (C) 2006 OpenWrt.org
- START=50
-
- EXTRA_COMMANDS="status reload"
-
- config_load "postgresql"
- config_get pgdata config PGDATA
- config_get pguser config PGUSER
- config_get pgctl config PG_CTL
- config_get pglog config PGLOG
-
- start() {
- if [ ! -e /usr/bin/su ]; then
- echo "The su command is requred to run postgres"
- exit 1
- fi
-
- if [ ! -d ${pgdata} ]; then
- echo "Create the data directory (${pgdata}) and try again"
- exit 1
- fi
-
- echo "starting postgres..."
- # make sure localhost (without a dot) is in /etc/hosts
- grep -q 'localhost$' /etc/hosts || echo '127.0.0.1 localhost' >> /etc/hosts
-
- # for whatever reason, /dev/null gets wrong perms
- chmod a+w /dev/null
-
- if [ -f ${pgdata}/postmaster.pid ]; then
- rm ${pgdata}/postmaster.pid
- fi
-
- config_get pgopts config PGOPTS
- if [ -n "${pgopts}" ]; then
- pgopts="-o ${pgopts}"
- fi
- /usr/bin/su ${pguser} -c "/usr/bin/postmaster -D '${pgdata}' &" >> ${pglog} 2>&1
-
- while :
- do
- cnt=$((${cnt} + 1))
- if [ -f "${pgdata}/postmaster.pid" ]; then
- ret=0
- break
- fi
-
- if [ ${cnt} -eq 30 ]; then
- echo "Postgres failed to start. See ${pglog} for details"
- ret=1
- break
- fi
- sleep 1
- done
-
- echo "ok"
- return ${ret}
- }
-
- stop() {
- echo "stopping postgres..."
- /usr/bin/su ${pguser} -c "${pgctl} stop -D '${pgdata}' -s -m fast"
- ret=$?
- if [ -f ${pgdata}/postmaster.pid ]; then
- rm ${pgdata}/postmaster.pid
- fi
- echo "ok"
- return ${ret}
- }
-
- restart() {
- echo "restarting postgres..."
- /usr/bin/su ${pguser} -c "${pgctl} stop -D '${pgdata}' -s -m fast -w"
- if [ -f ${pgdata}/postmaster.pid ]; then
- rm ${pgdata}/postmaster.pid
- fi
- /usr/bin/su ${pguser} -c "/usr/bin/postmaster -D '${pgdata}' &" >> ${pglog} 2>&1
- echo "ok"
- return $?
- }
-
- reload() {
- echo "reloading postgres..."
- /usr/bin/su ${pguser} -c "${pgctl} reload -D '${pgdata}' -s"
- echo "ok"
- }
-
- status() {
- echo "status postgres..."
- /usr/bin/su ${pguser} -c "${pgctl} status -D '${pgdata}'"
- echo "ok"
- }
|