©
This document uses PHP Chinese website manual Release
pg_ctl init[db] [-s] [-D datadir] [-o options]
pg_ctl start [-w] [-t seconds] [-s] [-D datadir] [-l filename] [-o options] [-p path] [-c]
pg_ctl stop [-W] [-t seconds] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ]
pg_ctl restart [-w] [-t seconds] [-s] [-D datadir] [-c] [-m s[mart] | f[ast] | i[mmediate] ] [-o options]
pg_ctl reload [-s] [-D datadir]
pg_ctl status [-D datadir]
pg_ctl kill [signal_name] [process_id]
pg_ctl register [-N servicename] [-U username] [-P password] [-D datadir] [-w] [-t seconds] [-o options]
pg_ctl unregister [-N servicename]
pg_ctl 是一个实用程序,它初始化PostgreSQL 数据库集群,启动、终止或者重启PostgreSQL后台服务器 (postgres),或显示一个正在运行的服务器的状态。尽管服务器不能 手动启动,pg_ctl封装任务,如:重定向日志输出以及从终端和过程组 恰当拆分。它也为受控关闭提供了便捷选项。
init或者initdb模式创建了一个新的 PostgreSQL数据库集群。一个数据库集群式一组由单一服务器实例管理 的数据库的集合。该模式调用initdb命令。参阅 initdb获取详细信息。
在start模式中,一个新服务器被启动。该服务器在后台启动,而标准输出 被连接到/dev/null(或者在Windows中是nul)。 在类Unix系统中,默认情况下,服务器的标准输出和标准错误被发送到pg_ctl 的标准输出中(而不是标准错误)。pg_ctl然后应该 被重定向到一个文件或输送到另一个进程(例如像rotatelogs的日志旋转程序); 否则,postgres会将输出写到控制终端(从后台),并且不离开shell的过程组。 在Windows中,缺省时服务器的标准输出和标准错误会被发送到终端。可以通过使用-l 附加服务器输出到日志文件来改变这些默认行为。
在stop模式中,在特定数据目录下运行的服务器是关闭的。三种不同的关闭方法 可以用-m选择:"Smart"模式等待在线备份模式完成并断开所有的 客户端连接。这是默认的。如果服务器是在恢复,一旦所有客户端断开了那么恢复和流式复制将会中断。 "Fast"模式不等待客户端断开连接并将终止一个进行中的在线备份。回滚所有活动事务 并强制断开客户端连接,然后服务器就会关闭。"Immediate"模式将会在不完全关闭的情况下 中止所有服务器进程。这会导致在重启时运行一个恢复。
restart实际上是先执行一个停止,然后紧跟一个启动。它允许变换 postgres的命令行选项。
reload模式简单地给postgres发送一个 SIGHUP信号,导致它重新读取配置文件 (postgresql.conf,pg_hba.conf等), 这样就允许修改配置文件选项而不用重启系统即可生效。
status模式监查一个服务器是否在指定的数据目录运行,如果是, 那么显示其PID和调用它的命令行选项。
kill模式允许你给一个指定的进程发送信号。这个功能对 Microsoft Windows特别有用,因为它没有kill 命令。使用--help查看支持的信号名字列表。
register mode 模式允许你在Microsoft Windows上注册一个系统服务。
unregister模式允许你在Microsoft Windows上删除先前用 register命令注册的系统服务。
通过提高强加于服务器的任何软资源限制,尝试允许服务器故障在其可用的平台上产生核心文件。 这在调试和诊断问题方面也是有效的,通过允许从一个失败的服务器进程获得一个堆栈跟踪。
声明该数据库的文件系统位置。如果忽略则使用PGDATA环境变量。
把服务器日志输出附加在filename文件上。如果该文件不存在则创建它。 umask设置为 077 ,因此缺省时是不允许从其它用户向日志文件访问的。
Specifies the shutdown mode. mode can be smart, fast, or immediate, or the first letter of one of these three. 声明关闭模式。mode可以是 smart,fast,immediate之一, 或者是这三个的首字母之一。
声明要直接传递给postgres的选项。
参数通常都用单或者双引号包围以保证它们作为一个整体传递。
指定postgres可执行文件的位置。缺省时postgres 可执行文件来自和pg_ctl一样的相同目录,或者如果该目录失败,则是 硬连线安装目录。不必使用该选项,除非你在做一些不同寻常的操作或者得到postgres 执行文件找不到的错误。
在init模式中,该选项类似地指定initdb 可执行文件的位置。
只打印错误,而不打印提示性信息。
等待启动或者关机完成的等待秒数。
等待启动或者关闭的完成(60 秒超时),这个参数是关闭时的缺省值。成功的关闭是以删除 PID文件为标志的。对于启动而言,一次成功的psql -l 就标志着成功。pg_ctl将企图使用对psql合适的端口, 如果存在PGPORT环境变量,那么将用它。否则,它将查找在 postgresql.conf文件里是否设置了一个端口。如果都没有,它将使用 PostgreSQL编译时的缺省端口(缺省 5432)。在等待的时候, pg_ctl将根据启动或者关闭的成功状况返回一个准确的退出代码。
不等待启动或者停止的完成。这是启动和重启的缺省。
要注册的系统服务的名字。这个名字将用于服务名和显示名。
用户启动服务的口令
用于启动服务的用户的用户名。对于域用户,使用DOMAIN\username格式。
缺省数据目录位置
默认的主机名或者psql的unix域套接字的位置(-w选项所使用的)。
psql的默认端口号(psql选项所使用的)。
对于额外的服务器变量,请参阅postgres。该实用程序,跟大部分其他 PostgreSQL实用程序一样,也是用libpq支持的环境变量。 (请参阅Section 31.13)。
这个文件存在于数据目录中是为了帮助pg_ctl判断服务器当前是否在运行。
如果这个文件存在于数据目录,pg_ctl(在restart 模式下)将把文件地内容当作传递给postgres命令的选项传递过去, 除非被-o选项覆盖。这个文件的内容也会在status模式里显示出来。
这个文件在数据目录中,会分析它以查找和psql一起用的合适的端口 (在start模式里给出-w的时候)。
等待完整的启动并不是一个定义明确的操作,并且如果访问控制已设置可能或失败, 因此一个本地客户端不能在没有手动交互时连接(例如:密码身份认证)。 对于额外的连接变量,请参阅Section 31.13,并且对于秘密, 也参阅Section 31.14。
启动服务器:
$ pg_ctl start
启动服务器的一个例子,等到服务器启动了才退出:
$ pg_ctl -w start
服务器使用5433端口,而且不带fsync
运行,使用:
$ pg_ctl -o "-F -p 5433" start
$ pg_ctl stop
使用-m选项停止服务器允许用户控制如何关闭后端。
这个命令几乎等于先停止服务器然后再启动它,只不过pg_ctl保存并重新 使用上一次运行服务器的命令行参数。重启服务器的最简单的方法是:
$ pg_ctl restart
重启服务器,等待其停止和重启:
$ pg_ctl -w restart
使用 5433 端口重启并且重启后关闭fsync
:
$ pg_ctl -o "-F -p 5433" restart
下面是来自pg_ctl的状态输出的例子:
$ pg_ctl status pg_ctl: server is running (pid: 13718) Command line was: /usr/local/pgsql/bin/postgres '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'
这就是在 restart 模式中被调用的命令行。