PostgresSQL启动脚本

建议使用systemd进行管理,不要再使用init脚本了
以下内容更新于2/28/2018

  • 新建文件/etc/systemd/system/postgres.service
[Unit]
Description=Postgresql server
After=network.target

[Service]
User=pgsql
Group=pgsql
Type=forking
ExecStart=/usr/local/postgres/bin/pg_ctl -D /mnt/raid0/data/postgres/10 -l /var/log/pg10.log start
ExecStop=/usr/local/postgres/bin/pg_ctl -D /mnt/raid0/data/postgres/10 -l /var/log/pg10.log stop
ExecReload=/usr/local/postgres/bin/pg_ctl -D /mnt/raid0/data/postgres/10 -l /var/log/pg10.log reload

[Intstall]
WantedBy=multi-user.target
  • 启动并设置开机默认启动
# 每次修改、新增任意一个systemd service或timer、target等都必须先执行一次systemctl daemon-reload
[email protected]:# systemctl daemon-reload
[email protected]:# systemctl start postgres
# 设置开启自动启动
[email protected]:# systemctl enable postgres

# reload和stop
[email protected]:# systemctl reload|stop postgres

以下内容已过时

Debina 7.5 / Ubuntu 14.04 Lts 测试通过

#名字自己取
vim /etc/init.d/pgsql

写入如下内容:

#! /bin/sh

# chkconfig: 2345 98 02
# description: PostgreSQL RDBMS

# 安装路径
prefix=/usr/local/postgres
# 数据路径
PGDATA="/data/pgsql"
# 启动用户
PGUSER=pgsql
# log路径 一般不用改
PGLOG="$PGDATA/pgsql.log"

#OOM_SCORE_ADJ=-1000
#OOM_ADJ=-17


PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

DAEMON="$prefix/bin/postmaster"

PGCTL="$prefix/bin/pg_ctl"

set -e

test -x $DAEMON ||
{
    echo "$DAEMON not found"
    if [ "$1" = "stop" ]
    then exit 0
    else exit 5
    fi
}


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' &" >>$PGLOG 2>&1
    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' &" >>$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
# 设置自启动
update-rc.d -f pgsql defaults

完成

去打赏

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

正在跳转到PayPal...

发表评论

电子邮件地址不会被公开。