mirror of
https://github.com/Ponce/slackbuilds
synced 2024-12-05 00:55:44 +01:00
b81b97324f
Signed-off-by: Robby Workman <rworkman@slackbuilds.org>
178 lines
4.6 KiB
Bash
178 lines
4.6 KiB
Bash
#!/bin/bash
|
|
|
|
## PostgreSQL startup script for Slackware Linux
|
|
##
|
|
## Copyright (c) 2007-2013 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/@PG_VERSION@/data"
|
|
#
|
|
|
|
# Since PostgreSQL 9.3 this startup script can run multiple PostgreSQL
|
|
# versions on different ports and with different data dirs.
|
|
#
|
|
# e.g. PG_VERSION=9.4 PG_PORT=6432 /etc/rc.d/rc.postgresql start
|
|
#
|
|
# Older PostgreSQL 9.x versions are supported too, just use PG_VERSION=9.2
|
|
|
|
PG_VERSION=${PG_VERSION:-@PG_VERSION@}
|
|
PG_PORT=${PG_PORT:-@PG_PORT@}
|
|
LIBDIRSUFFIX="@LIBDIRSUFFIX@"
|
|
|
|
if [ "x$PG_VERSION" != "x9.2" ];then
|
|
LOGFILE=/var/log/postgresql-$PG_VERSION
|
|
DATADIR=/var/lib/pgsql/$PG_VERSION/data
|
|
POSTGRES=/usr/lib${LIBDIRSUFFIX}/postgresql/$PG_VERSION/bin/postgres
|
|
PG_CTL=/usr/lib${LIBDIRSUFFIX}/postgresql/$PG_VERSION/bin/pg_ctl
|
|
else
|
|
LOGFILE=/var/log/postgresql
|
|
DATADIR=/var/lib/pgsql/data
|
|
POSTGRES=/usr/bin/postgres
|
|
PG_CTL=/usr/bin/pg_ctl
|
|
fi
|
|
|
|
PIDFILE=postmaster.pid
|
|
|
|
# oom-killer score
|
|
# if defined and set to -1000, main postmaster wont be killed
|
|
# by Linux OOM killer, but individual backends still could be
|
|
# (since OOM_SCORE_ADJ in SlackBuild is set to 0)
|
|
#
|
|
# http://www.kernel.org/doc/Documentation/filesystems/proc.txt
|
|
OOM_SCORE_ADJ=-1000
|
|
|
|
# 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="$PG_CTL -o '-p $PG_PORT' $@"
|
|
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.$PG_PORT
|
|
rm -f /tmp/.s.PGSQL.$PG_PORT.lock
|
|
test x"$OOM_SCORE_ADJ" != x && echo "$OOM_SCORE_ADJ" > /proc/self/oom_score_adj
|
|
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..."
|
|
test x"$OOM_SCORE_ADJ" != x && echo "$OOM_SCORE_ADJ" > /proc/self/oom_score_adj
|
|
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
|