aboutsummaryrefslogtreecommitdiffstats
path: root/meta-openstack/recipes-dangling/postgresql/postgresql/postgresql
blob: 5a34ec0ee8af66d84d81422804777340e90511e8 (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
#!/bin/sh

### BEGIN INIT INFO
# Provides:     postgresql
# Required-Start:   $local_fs $remote_fs $network $time
# Required-Stop:    $local_fs $remote_fs $network $time
# Should-Start:     $syslog
# Should-Stop:      $syslog
# Default-Start:    2 3 4 5
# Default-Stop:     0 1 6
# Short-Description:    PostgreSQL RDBMS server
### END INIT INFO

DAEMON=/usr/bin/postmaster
DESC="PostgreSQL RDBMS server"

datadir=`grep ^data_directory /etc/postgresql/postgresql.conf |sed -e "s#^.*= '##; s#'.*##"`
if [ "$datadir" = "" ] ; then
    datadir=/etc/postgresql
else
    if [ ! -e $datadir/postgresql.conf ] ; then
	if [ -e /etc/postgresql/postgresql.conf -a -e $datadir ] ; then
	    ln -s /etc/postgresql/*.conf $datadir/
	fi
    fi
fi

cd /

start ()
{
    echo -n "Starting postgres server..."
    if pidof ${DAEMON} > /dev/null; then
        echo "already running."
        exit 0
    fi
    touch /var/log/postgresql.log
    chown postgres /var/log/postgresql.log
    sudo -u postgres /usr/bin/pg_ctl start -w -D $datadir -s -l /var/log/postgresql.log
    if [ $? -eq 0 ]; then
        echo "done."
    else
        echo "failed."
    fi
}

stop ()
{
    echo -n "Stopping postgres server..."
    if ! pidof ${DAEMON} >/dev/null; then
        echo "not running."
        exit 0
    fi
    sudo -u postgres /usr/bin/pg_ctl stop -w -D $datadir -m fast -s
    if [ $? -eq 0 ]; then
        echo "done."
    else
	if [ -f /etc/postgresql/postmaster.pid -a "$datadir" != "/etc/postgresql" ] ; then
	    # Special case for transition 
	    sudo -u postgres /usr/bin/pg_ctl stop -w -D /etc/postgresql -m fast -s
	fi
        if ! pidof ${DAEMON} > /dev/null; then
	    echo "done."
	else
            echo "failed."
	    exit 1
	fi
    fi
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    force-reload)
        stop
        start
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "Usage: $0 {start|stop|force-reload|restart}"
        exit 1
        ;;
esac

exit 0