mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-23 23:07:19 +02:00
script. To do this, have pg_ctl pass down its parent shell's PID in an environment variable PG_GRANDPARENT_PID, and teach CreateLockFile() to disregard that PID as a false match if it finds it in postmaster.pid. This allows us to cope with one level of postgres-owned shell process even with pg_ctl in the way, so it's just as safe as starting the postmaster directly. You still have to be careful about how you write the initscript though. Adjust the comments in contrib/start-scripts/ to not deprecate use of pg_ctl. Also, fix the ROTATELOGS option in the OSX script, which was indulging in exactly the sort of unsafe coding that renders this fix pointless :-(. A pipe inside the "sudo" will probably result in more than one postgres-owned process hanging around.
64 lines
1.5 KiB
Bash
64 lines
1.5 KiB
Bash
#! /bin/sh
|
|
|
|
# PostgreSQL boot time startup script for FreeBSD. Copy this file to
|
|
# /usr/local/etc/rc.d/postgresql.
|
|
|
|
# Created through merger of the Linux start script by Ryan Kirkpatrick
|
|
# and the script in the FreeBSD ports collection.
|
|
|
|
# $PostgreSQL: pgsql/contrib/start-scripts/freebsd,v 1.5 2009/08/27 16:59:38 tgl Exp $
|
|
|
|
## EDIT FROM HERE
|
|
|
|
# Installation prefix
|
|
prefix=/usr/local/pgsql
|
|
|
|
# Data directory
|
|
PGDATA="/usr/local/pgsql/data"
|
|
|
|
# Who to run the postmaster as, usually "postgres". (NOT "root")
|
|
PGUSER=postgres
|
|
|
|
# Where to keep a log file
|
|
PGLOG="$PGDATA/serverlog"
|
|
|
|
## STOP EDITING HERE
|
|
|
|
# The path that is to be used for the script
|
|
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
|
|
|
# What to use to start up the postmaster. (If you want the script to wait
|
|
# until the server has started, you could use "pg_ctl start -w" here.
|
|
# But without -w, pg_ctl adds no value.)
|
|
DAEMON="$prefix/bin/postmaster"
|
|
|
|
# What to use to shut down the postmaster
|
|
PGCTL="$prefix/bin/pg_ctl"
|
|
|
|
# Only start if we can find the postmaster.
|
|
test -x "$DAEMON" || exit 0
|
|
|
|
case $1 in
|
|
start)
|
|
su -l $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
|
|
echo -n ' postgresql'
|
|
;;
|
|
stop)
|
|
su -l $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast"
|
|
;;
|
|
restart)
|
|
su -l $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w"
|
|
su -l $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
|
|
;;
|
|
status)
|
|
su -l $PGUSER -c "$PGCTL status -D '$PGDATA'"
|
|
;;
|
|
*)
|
|
# Print help
|
|
echo "Usage: `basename $0` {start|stop|restart|status}" 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0
|