postgresql的pg_ctl

前端之家收集整理的这篇文章主要介绍了postgresql的pg_ctl前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Name

pg_ctl--启动,停止和重起 Postgresql

Synopsis

pg_ctlstart [-w] [-s] [-Ddatadir] [-lfilename] [-ooptions] [-ppath]
pg_ctlstop [-W] [-s] [-Ddatadir] [-m s[mart] | f[ast] | i[mmediate] ]
pg_ctlrestart [-w] [-s] [-Ddatadir] [-m s[mart] | f[ast] | i[mmediate] ] [-ooptions]
pg_ctlreload [-s] [-Ddatadir]
pg_ctlstatus [-Ddatadir]
pg_ctlkill [signal_name] [process_id]

描述

pg_ctl是一个用于启动,停止, 或者重起Postgresql后端服务器(postmaster), 或者显示一个运行着的服务器的状态的工具, 尽管我们可以手动启动服务器,但是pg_ctl封装了重新定向日志输出, 与终端和进程组合理分离,以及另外提供了一个选项用于有控制的关闭

start模式里会启动一个新的服务器。 服务器是在后台启动的,标准输入被附着到了/dev/null上。如果使用了-l,那么标准输出和标准错误被定向到一个日志文件, 要么就是重新定向到pg_ctl的标准输出(而不是标准错误)。 如果没有选定日志文件pg_ctl的标准输出应该重新定向到一个文件或者用管道输出类似rotatelogs这样的日志旋转程序,否则,postmaster将把它的输出写到控制终端(在后台)并且将不会脱离 shell 的进程组。

stop模式下,那个正在特定数据目录运行的服务器被关闭。 你可以用-m选项选择三种不同的关闭模式:"Smart"模式等待所有客户端中断联接。 这个是缺省。"Fast"模式并不等待客户端中断联接。 所有活跃事务都被回卷并且客户端都强制断开。"Immediate"模式将在没有干净关闭的情况下退出。这么做将导致在重新启动的时候的恢复。

restart实际上是先执行一个停止,然后紧跟一个启动。它允许变换postmaster命令行的选项。

reload模式简单地给postmaster发送一个SIGHUP信号,导致它重新读取她的配置文件postgresql.confpg_hba.conf等等) 这样就允许修改配置文件选项而不用完全重启系统来使之生效。

status模式监查一个服务器是否在指定的数据目录运行, 如果是,那么显示PID调用它的命令行选项。

kill模式允许你给一个指定的进程发送信号。 这个功能Microsoft Windows特别有用,因为那里没有kill命令。 使用--help查看支持的信号的名字的列表。

选项

-Ddatadir

声明该数据库文件文件系统位置。 如果忽略这个选项,使用环境变量PGDATA

-lfilename

把服务器日志输出附加在filename文件上。 如果该文件不存在,那么创建它。umask设置为 077, 因此缺省时是不允许从其它用户向日志文件访问的。

-mmode

声明关闭模式。mode可以是smart,fast,或者immediate,或者是这三个之一的第一个字母。

-ooptions

声明要直接传递给postmaster的选项。

参数通常都用单或者双引号包围以保证它们作为一个整体传递。

-ppath

声明postmaster可执行文件的位置。 缺省时postmaster是从和pg_ctl相同的目录取出,如果不是, 那么就是写死的安装目录。除非你想干点什么特别的事情,并且得到类似没有找到postmaster这样的错误, 否则没有必要使用这个选项。

-s

只打印错误,而不打印提示性信息。

-w

等待启动或者关闭的完成。在 60 秒后超时。 这个参数是关闭时的缺省值。 成功的关闭是以删除PID文件为标志的。对于启动而言, 一次成功的psql -l就标志着成功。pg_ctl将视图使用对 psql 合适的端口,如果存在环境变量 PGPORT,那么用它。 否则,它将查找看看在postgresql.conf文件里面是否设置了一个端口。 如果都没有,它将使用Postgresql编译时的缺省端口(缺省是 5432)。 在等待的时候,pg_ctl将根据启动或者关闭的成功状况返回一个准确的退出代码

-W

不等待启动或者停止的完成。这是启动和重起的缺省。

环境

PGDATA

缺省数据目录位置

PGPORT

psql的缺省端口(由 -w 选项使用)。

其它的环境变量,参阅postmaster

@L_502_8@

文件

postmaster.pid

这个文件存在于数据目录中是为了帮助pg_ctl判断服务器当前是否在运行。

postmaster.opts.default

如果这个文件存在于数据目录,pg_ctl(在start模式下)将把文件内容当作传递给postmaster命令的选项传递过去,除非被-o选项覆盖。

postmaster.opts

如果这个文件存在于数据目录,pg_ctl(在start模式下) 将把文件内容当作传递给postmaster命令的选项传递过去, 除非被-o选项覆盖。这个文件内容也会在status模式里显示出来。

postgresql.conf

这个文件在数据目录中,会分析它以查找和psql一起用的合适的端口(在start模式里给出-w的时候。)

如果在数据目录里存在postmaster.opts.default文件,那么该文件将作为选项传递给postmaster, 除非被-o选项覆盖。

注意

等待完全启动还不是一个定义得很完整的操作, 如果访问控制设置为本地客户端在没有手工交互的情况下不能访问的话还可能会失效。(比如,口令认证)。

例子

启动服务器

启动服务器:

$ pg_ctl start

启动服务器的一个例子, 等到服务器 启动了才退出

$ pg_ctl -w start

用于一个postmaster使用端口 5433,而且不带fsync运行,使用:

$ pg_ctl -o "-F -p 5433" start

停止服务器

$ pg_ctl stop

停止服务器,使用-m开关允许我们控制如何把后端停下来。-w等待服务器停止。-m声明后端的停止模式。

重起服务器

这个命令几乎等于先停止postmaster然后再启动她,只不过pg_ctl保存并重新使用上一次运行 postmaster 的命令行参数。重起服务器的最简单的方法是:

$ pg_ctl restart

重起服务器,等待其停止和重起:

$ pg_ctl -w restart

使用 5433 重起并且重起后关闭fsync

$ pg_ctl -o "-F -p 5433" restart

显示服务器状态

下面是来自pg_ctl的状态输出的例子:

$ pg_ctl status
pg_ctl: postmaster is running (pid: 13718)
Command line was:
/usr/local/pgsql/bin/postmaster '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'

这是在重起模式里使用的命令行。

原文链接:https://www.f2er.com/postgresql/195485.html

猜你在找的Postgre SQL相关文章