blob: 5eef25badd84922a5c035ce2aa7359f3aa1860ad (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
#!/bin/bash
# PostgreSQL startup script for Slackware Linux
# Copyright 2007 Adis Nezirovic <adis _at_ linux.org.ba>
# Licensed under GNU GPL v2
# Do not source this script (since it contains exit() calls)
# Before you can run postgresql you'll need to create the
# database files in /var/lib/pgsql. The following should do
# the trick.
#
# $ su postgres -c "initdb -D /var/lib/pgsql/data"
#
LOGFILE=/var/log/postgresql
DATADIR=/var/lib/pgsql/data
POSTGRES=/usr/bin/postgres
PIDFILE=postmaster.pid
# Return values (according to LSB):
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
pg_ctl()
{
CMD="/usr/bin/pg_ctl $@"
su - postgres -c "$CMD"
}
if [ ! -f $POSTGRES ]; then
echo "Could not find 'postgres' binary. Maybe PostgreSQL is not installed properly?"
exit 5
fi
case "$1" in
"start")
echo "Starting PostgreSQL"
touch $LOGFILE
chown postgres:wheel $LOGFILE
chmod 0640 $LOGFILE
if [ ! -e $DATADIR/PG_VERSION ]; then
echo "You should initialize the PostgreSQL database at location $DATADIR"
exit 6
fi
if [ $(pgrep -f $POSTGRES) ]; then
echo "PostgreSQL daemon already running"
if [ ! -f $DATADIR/$PIDFILE ]; then
echo "Warning: Missing pid file $DATADIR/$PIDFILE"
fi
exit 1
else # remove old socket, if it exists and no daemon is running.
if [ ! -f $DATADIR/$PIDFILE ]; then
rm -f /tmp/.s.PGSQL.5432
rm -f /tmp/.s.PGSQL.5432.lock
pg_ctl start -w -l $LOGFILE -D $DATADIR
exit 0
else
echo "PostgreSQL daemon was not properly shut down"
echo "Please remove stale pid file $DATADIR/$PIDFILE"
exit 7
fi
fi
;;
"stop")
echo "Shutting down PostgreSQL..."
pg_ctl stop -l $LOGFILE -D $DATADIR -m smart
;;
"force-stop")
# Take care! This will kill _all_ client connections
# and rollback current transactions.
echo "Shutting down PostgreSQL (fast)..."
pg_ctl stop -l $LOGFILE -D $DATADIR -m fast
;;
"unclean-stop")
# Take care: This will abort server process itself
# resulting with database recovery on next start.
echo "Shutting down PostgreSQL (immediate)..."
pg_ctl stop -l $LOGFILE -D $DATADIR -m immediate
;;
"restart")
echo "Restarting PostgreSQL..."
pg_ctl restart -l $LOGFILE -D $DATADIR -m smart
;;
"force-restart")
# Take care! This will kill _all_ client connections
# and rollback current transactions.
echo "Restarting PostgreSQL (fast)..."
pg_ctl restart -l $LOGFILE -D $DATADIR -m fast
;;
"unclean-restart")
# Take care: This will abort server process itself
# resulting with database recovery on start.
echo "Restarting PostgreSQL (immediate)..."
pg_ctl restart -l $LOGFILE -D $DATADIR -m immediate
;;
"reload")
echo "Reloading configuration for PostgreSQL..."
pg_ctl reload -l $LOGFILE -D $DATADIR -m smart
;;
"status")
if [ $(pgrep -f $POSTGRES) ]; then
echo "PostgreSQL is running"
if [ ! -e $DATADIR/$PIDFILE ]; then
echo "Warning: Missing pid file $DATADIR/$PIDFILE"
fi
exit 0
else
echo "PostgreSQL is stopped"
if [ -e $DATADIR/$PIDFILE ]; then
echo "Detected stale pid file $DATADIR/$PIDFILE"
fi
exit 0
fi
;;
*)
# unclean-stop and unclean-restart are not documented on purpose.
echo "Usage: $0 {start|stop|force-stop|status|restart|force-restart|reload}"
exit 1
;;
esac
|