1 |
#! /bin/sh |
2 |
# postgresql This is the init script for starting up the PostgreSQL |
3 |
# server |
4 |
# |
5 |
# chkconfig: 2345 85 15 |
6 |
# description: Starts and stops the PostgreSQL backend daemon that handles \ |
7 |
# all database requests. |
8 |
# processname: postmaster |
9 |
# pidfile: /var/lib/pgsql/data/postmaster.pid |
10 |
### BEGIN INIT INFO |
11 |
# Provides: postgresql |
12 |
# Required-Start: $local_fs $syslog |
13 |
# Required-Stop: |
14 |
# Default-Start: 3 4 5 |
15 |
# Default-Stop: 0 1 2 6 |
16 |
# Short-Description: PostgreSql server database |
17 |
# Description: Starts and stops the PostgreSQL backend daemon that handles |
18 |
# all database requests. |
19 |
### END INIT INFO |
20 |
|
21 |
# Source function library. |
22 |
. /etc/rc.d/init.d/functions |
23 |
|
24 |
# Get config. |
25 |
. /etc/sysconfig/network |
26 |
|
27 |
# Find the name of the script |
28 |
NAME=postgresql |
29 |
|
30 |
# Set defaults for port and database directory |
31 |
PG_CTL=/usr/bin/pg_ctl |
32 |
POSTMASTER=/usr/bin/postmaster |
33 |
LOG_FILE=/var/log/postgres/${NAME} |
34 |
BASEBIN=$(basename ${POSTMASTER}) |
35 |
LOCK_FILE=/var/lock/subsys/${BASEBIN} |
36 |
|
37 |
PGDATA=/var/lib/pgsql/data |
38 |
STOP_MODE="fast" |
39 |
|
40 |
[ -f /etc/sysconfig/postgresql ] && . /etc/sysconfig/postgresql |
41 |
[ -f ~postgres/.profile ] && . ~postgres/.profile |
42 |
|
43 |
# dependens on $PGDATA variable which might be overriden in sysconfig file |
44 |
PID_FILE=${PGDATA}/postmaster.pid |
45 |
|
46 |
# Override defaults from /etc/sysconfig/pgsql if file is present |
47 |
export LC_ALL |
48 |
export PGDATA |
49 |
export PGOPTIONS |
50 |
|
51 |
if [ ! -x "${POSTMASTER}" ]; then |
52 |
[ "$1" = "stop" ] && exit 0 |
53 |
gprintf "%s needs to exist and be executable\n" "${POSTMASTER}" |
54 |
exit 5 |
55 |
fi |
56 |
|
57 |
RETVAL=0 |
58 |
|
59 |
initdb() { |
60 |
# Check for the PGDATA structure |
61 |
if [ ! -f ${PGDATA}/PG_VERSION ]; then |
62 |
gprintf "Initializing database: " |
63 |
if [ ! -d ${PGDATA} ]; then |
64 |
mkdir -p ${PGDATA} |
65 |
chown postgres.postgres ${PGDATA} |
66 |
chmod go-rwx ${PGDATA} |
67 |
fi |
68 |
# Initialize the database |
69 |
daemon --user postgres "LC_ALL=${LC_ALL} /usr/bin/initdb --pgdata=${PGDATA} &>> /var/log/postgres/postgresql && test -f ${PGDATA}/PG_VERSION" |
70 |
RETVAL=$? |
71 |
echo |
72 |
fi |
73 |
return $RETVAL |
74 |
} |
75 |
|
76 |
start() { |
77 |
initdb |
78 |
gprintf "Starting %s service: " "${NAME}" |
79 |
daemon --check ${POSTMASTER} --pidfile ${PID_FILE} --user postgres "${PG_CTL} start -l ${LOG_FILE} -D ${PGDATA} -p ${POSTMASTER} ${PGOPTIONS} > /dev/null" |
80 |
RETVAL=$? |
81 |
echo |
82 |
[ $RETVAL -eq 0 ] && touch ${LOCK_FILE} |
83 |
return $RETVAL |
84 |
} |
85 |
|
86 |
stop(){ |
87 |
gprintf "Stopping %s service: " "${NAME}" |
88 |
daemon --user postgres "${PG_CTL} stop -D ${PGDATA} -s -m ${STOP_MODE} > /dev/null" |
89 |
RETVAL=$? |
90 |
echo |
91 |
[ $RETVAL -eq 0 ] && rm -f ${LOCK_FILE} |
92 |
return $RETVAL |
93 |
} |
94 |
|
95 |
restart(){ |
96 |
gprintf "Restarting %s service: " "${NAME}" |
97 |
daemon --user postgres "${PG_CTL} restart -l ${LOG_FILE} -D ${PGDATA} -s -m ${STOP_MODE} ${PGOPTIONS} > /dev/null" |
98 |
RETVAL=$? |
99 |
echo |
100 |
[ $RETVAL -eq 0 ] && touch ${LOCK_FILE} |
101 |
return $RETVAL |
102 |
} |
103 |
|
104 |
reload(){ |
105 |
gprintf "Reloading %s service: " "${NAME}" |
106 |
daemon --user postgres "${PG_CTL} reload -D ${PGDATA} -s > /dev/null" |
107 |
RETVAL=$? |
108 |
echo |
109 |
return $RETVAL |
110 |
} |
111 |
|
112 |
rh_status() { |
113 |
status -p ${PID_FILE} ${POSTMASTER} |
114 |
RETVAL=$? |
115 |
return $RETVAL |
116 |
} |
117 |
|
118 |
rh_status_q() { |
119 |
return $(rh_status >/dev/null 2>&1) |
120 |
} |
121 |
|
122 |
ACTION="$1" |
123 |
|
124 |
while [ "$#" -ne 0 ]; do |
125 |
shift |
126 |
case "$1" in |
127 |
smart|fast|immediate) |
128 |
STOP_MODE="$1" |
129 |
;; |
130 |
esac |
131 |
done |
132 |
|
133 |
# See how we were called. |
134 |
case "$ACTION" in |
135 |
start) |
136 |
rh_status_q && exit 0 |
137 |
start |
138 |
;; |
139 |
stop) |
140 |
stop |
141 |
;; |
142 |
status) |
143 |
rh_status |
144 |
;; |
145 |
restart) |
146 |
rh_status_q && restart || start |
147 |
;; |
148 |
reload|force-reload) |
149 |
reload |
150 |
;; |
151 |
condrestart|try-restart) |
152 |
rh_status_q || exit 0 |
153 |
restart |
154 |
;; |
155 |
condstop) |
156 |
rh_status_q || exit 0 |
157 |
stop |
158 |
;; |
159 |
init) |
160 |
init |
161 |
;; |
162 |
uninstall) |
163 |
uninstall |
164 |
;; |
165 |
*) |
166 |
gprintf "Usage: %s {start|status|restart|condrestart|condstop|reload|force-reload}\n" $0 |
167 |
gprintf "Stop: %s {stop|restart|condrestart|condstop} [smart|fast|immediate]\n" $0 |
168 |
RETVAL=2 |
169 |
;; |
170 |
esac |
171 |
|
172 |
exit $RETVAL |
173 |
|