Last active
May 10, 2016 07:34
-
-
Save gazeldx/de3dec9504986c7977e3d338568f41f1 to your computer and use it in GitHub Desktop.
Add this file to as cron jobs: */5 * * * * /opt/cron/pgdb_checkdown.sh >> /opt/cron/down.log 目的是在postgreSQL数据库的服务器重启的时候,自动启动PostgreSQL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/sh | |
# put this postgresql at /etc/init.d/postgresql | |
# 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 <[email protected]> | |
# contrib/start-scripts/linux | |
## EDIT FROM HERE | |
# Installation prefix | |
prefix=/usr/local/pgsql | |
# Data directory | |
PGDATA="/usr/local/pgsql/data" | |
# Who to run the postmaster 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). Setting the OOM_SCORE_ADJ value | |
# to -1000 will disable OOM kill altogether. If you enable this, you probably | |
# want to compile PostgreSQL with "-DLINUX_OOM_SCORE_ADJ=0", so that | |
# individual backends can still be killed by the OOM killer. | |
#OOM_SCORE_ADJ=-1000 | |
# Older Linux kernels may not have /proc/self/oom_score_adj, but instead | |
# /proc/self/oom_adj, which works similarly except the disable value is -17. | |
# For such a system, enable this and compile with "-DLINUX_OOM_ADJ=0". | |
#OOM_ADJ=-17 | |
## 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 the postmaster. (If you want the script to wait | |
# until the server has started, you could use "pg_ctl start -w" here. | |
# But without -w, pg_ctl adds no value.) | |
DAEMON="$prefix/bin/postmaster" | |
# What to use to shut down the postmaster | |
PGCTL="$prefix/bin/pg_ctl" | |
set -e | |
# Only start if we can find the postmaster. | |
test -x $DAEMON || | |
{ | |
echo "$DAEMON not found" | |
if [ "$1" = "stop" ] | |
then exit 0 | |
else exit 5 | |
fi | |
} | |
# Parse command line parameters. | |
case $1 in | |
start) | |
echo -n "Starting PostgreSQL: " | |
test x"$OOM_SCORE_ADJ" != x && echo "$OOM_SCORE_ADJ" > /proc/self/oom_score_adj | |
test x"$OOM_ADJ" != x && echo "$OOM_ADJ" > /proc/self/oom_adj | |
su - $PGUSER -c "$DAEMON -D '$PGDATA' &" | |
echo "ok" | |
;; | |
stop) | |
echo -n "Stopping PostgreSQL: " | |
su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast" | |
echo "ok" | |
;; | |
restart) | |
echo -n "Restarting PostgreSQL: " | |
su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w" | |
test x"$OOM_SCORE_ADJ" != x && echo "$OOM_SCORE_ADJ" > /proc/self/oom_score_adj | |
test x"$OOM_ADJ" != x && echo "$OOM_ADJ" > /proc/self/oom_adj | |
su - $PGUSER -c "$DAEMON -D '$PGDATA' &" | |
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
export PATH=/bin:$PATH | |
EXEC="/etc/init.d/postgresql" | |
RUNNING_Str="server is running" | |
MAILTO="[email protected],[email protected]" | |
DATE=`date +%Y-%m-%d:%H:%M:%S` | |
HNAME=`hostname` | |
pid=`$EXEC status|grep -w "server is running"|awk -F ':' '{print $3}'|sed 's/^[ \t]*//g'|sed 's/[()]//g'` | |
if [ -z $pid ]; then | |
NOT_RUNSTR="PostgreSQL Database is not running!" | |
STAR_STR=`$EXEC start` | |
echo "$DATE $HNAME $NOT_RUNSTR $STAR_STR" | |
echo "$DATE $HNAME $NOT_RUNSTR $STAR_STR"|mail -s "PG DB Monitor" "$MAILTO" | |
else | |
echo "$DATE $HNAME PostgreSQL Database is running. id:$pid " | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment