| #! /bin/sh |
| |
| # chkconfig: 2345 98 02 |
| # description: PostgreSQL RDBMS |
| |
| # This is an example of a start/stop script for SysV-style init, such |
| # as is used on Linux systems. You should edit some of the variables |
| # and maybe the 'echo' commands. |
| # |
| # Place this file at /etc/init.d/postgresql (or |
| # /etc/rc.d/init.d/postgresql) and make symlinks to |
| # /etc/rc.d/rc0.d/K02postgresql |
| # /etc/rc.d/rc1.d/K02postgresql |
| # /etc/rc.d/rc2.d/K02postgresql |
| # /etc/rc.d/rc3.d/S98postgresql |
| # /etc/rc.d/rc4.d/S98postgresql |
| # /etc/rc.d/rc5.d/S98postgresql |
| # Or, if you have chkconfig, simply: |
| # chkconfig --add postgresql |
| # |
| # Proper init scripts on Linux systems normally require setting lock |
| # and pid files under /var/run as well as reacting to network |
| # settings, so you should treat this with care. |
| |
| # Original author: Ryan Kirkpatrick <pgsql@rkirkpat.net> |
| |
| # contrib/start-scripts/linux |
| |
| ## EDIT FROM HERE |
| |
| # Installation prefix |
| prefix=/usr/local/pgsql |
| |
| # Data directory |
| PGDATA="/usr/local/pgsql/data" |
| |
| # Who to run postgres as, usually "postgres". (NOT "root") |
| PGUSER=postgres |
| |
| # Where to keep a log file |
| PGLOG="$PGDATA/serverlog" |
| |
| # It's often a good idea to protect the postmaster from being killed by the |
| # OOM killer (which will tend to preferentially kill the postmaster because |
| # of the way it accounts for shared memory). To do that, uncomment these |
| # three lines: |
| #PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj |
| #PG_MASTER_OOM_SCORE_ADJ=-1000 |
| #PG_CHILD_OOM_SCORE_ADJ=0 |
| # Older Linux kernels may not have /proc/self/oom_score_adj, but instead |
| # /proc/self/oom_adj, which works similarly except for having a different |
| # range of scores. For such a system, uncomment these three lines instead: |
| #PG_OOM_ADJUST_FILE=/proc/self/oom_adj |
| #PG_MASTER_OOM_SCORE_ADJ=-17 |
| #PG_CHILD_OOM_SCORE_ADJ=0 |
| |
| ## 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 postgres. (If you want the script to wait |
| # until the server has started, you could use "pg_ctl start" here.) |
| DAEMON="$prefix/bin/postgres" |
| |
| # What to use to shut down postgres |
| PGCTL="$prefix/bin/pg_ctl" |
| |
| set -e |
| |
| # Only start if we can find postgres. |
| test -x $DAEMON || |
| { |
| echo "$DAEMON not found" |
| if [ "$1" = "stop" ] |
| then exit 0 |
| else exit 5 |
| fi |
| } |
| |
| # If we want to tell child processes to adjust their OOM scores, set up the |
| # necessary environment variables. Can't just export them through the "su". |
| if [ -e "$PG_OOM_ADJUST_FILE" -a -n "$PG_CHILD_OOM_SCORE_ADJ" ] |
| then |
| DAEMON_ENV="PG_OOM_ADJUST_FILE=$PG_OOM_ADJUST_FILE PG_OOM_ADJUST_VALUE=$PG_CHILD_OOM_SCORE_ADJ" |
| fi |
| |
| |
| # Parse command line parameters. |
| case $1 in |
| start) |
| echo -n "Starting PostgreSQL: " |
| test -e "$PG_OOM_ADJUST_FILE" && echo "$PG_MASTER_OOM_SCORE_ADJ" > "$PG_OOM_ADJUST_FILE" |
| su - $PGUSER -c "$DAEMON_ENV $DAEMON -D '$PGDATA' >>$PGLOG 2>&1 &" |
| echo "ok" |
| ;; |
| stop) |
| echo -n "Stopping PostgreSQL: " |
| su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s" |
| echo "ok" |
| ;; |
| restart) |
| echo -n "Restarting PostgreSQL: " |
| su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s" |
| test -e "$PG_OOM_ADJUST_FILE" && echo "$PG_MASTER_OOM_SCORE_ADJ" > "$PG_OOM_ADJUST_FILE" |
| su - $PGUSER -c "$DAEMON_ENV $DAEMON -D '$PGDATA' >>$PGLOG 2>&1 &" |
| echo "ok" |
| ;; |
| reload) |
| echo -n "Reload PostgreSQL: " |
| su - $PGUSER -c "$PGCTL reload -D '$PGDATA' -s" |
| echo "ok" |
| ;; |
| status) |
| su - $PGUSER -c "$PGCTL status -D '$PGDATA'" |
| ;; |
| *) |
| # Print help |
| echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2 |
| exit 1 |
| ;; |
| esac |
| |
| exit 0 |