pg_ctl init[db] [-s] [-D datadir] [-o initdb-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 promote [-s] [-D datadir]
pg_ctl kill signal_name process_id
pg_ctl register [-N servicename] [-U username] [-P password] [-D datadir] [-S a[uto] | d[emand] ] [-w] [-t seconds] [-s] [-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添加到服务器的输出到日志文件来 改变缺省操作。推荐使用-l或者输出重定向。
在stop模式下,那个正在特定数据目录中运行的服务器将被关闭。 你可以用-m选项选择三种不同的关闭模式: "Smart"模式等待所有活跃客户端中断连接并且结束任何在线备份。 如果终止服务器热备份,恢复和流复制,则切断了所有客户端。 "Fast"模式并不等待客户端中断连接并且终止正在进行的在线备份。 所有活跃事务都被回滚并且客户端都被强制断开。然后关闭服务器。 "Immediate"模式将在没有干净关闭的情况下立即中断所有服务器进程。 这么做将导致在重新启动的时候的恢复。
restart模式实际上是先执行一个停止, 然后紧跟一个启动。它允许变换postgres的命令行选项。 如果服务器启动期间在命令行上指定相对路径,那么restart 可能会失败。
reload模式简单地给postgres 发送一个SIGHUP信号, 导致它重新读取配置文件 (postgresql.conf,pg_hba.conf等), 这样就允许修改配置文件选项而不用重启系统即可生效。
status模式检查一个服务器是否在指定的数据目录上运行, 如果是,那么显示其PID和调用它的命令行选项。 如果服务器不运行,那么进程返回退出状态3。
在promote模式中,在指定数据目录中运行的备份服务器被执行以退出 恢复并且开始读写操作。
kill模式允许你给一个指定的进程发送信号。 这个功能对Microsoft Windows特别有用, 因为它没有kill命令。 使用--help查看支持的信号名字列表。
register模式允许你在Microsoft Windows上注册一个系统服务。 -S选项允许选择服务启动类型, "auto" (系统启动时自动启动服务)或者"demand" (命令中启动服务)。
unregister模式允许你在Microsoft Windows 上注销系统服务。这个撤销了register命令的影响。
尝试允许服务器崩溃产生核心文件,在平台上这是可能的,通过提高核心文件上的 任何软件资源限制。 这对于调试或者诊断通过允许堆栈跟踪从失败服务器进程中获得的问题是非常有用的。
声明该数据库配置文件的文件系统位置。如果忽略则使用PGDATA环境变量。
把服务器日志输出附加在filename文件上。 如果该文件不存在则创建它。umask设置为077, 因此缺省时不允许从其它用户向日志文件访问的。
声明关闭模式。mode可以是 smart,fast或者 immediate之一,或者是这三个的首字母之一。 如果忽略则使用smart。
声明要直接传递给postgres命令的选项。
通常被单引号或者双引号包围的选项确保它们作为一个整体传递。
指定直接被传递给initdb命令的选项。
参数通常都用单或者双引号包围以保证它们作为一个整体传递。
声明postgres可执行文件的位置。 缺省postgres可执行文件位于pg_ctl自身所在目录, 如果没找到则使用硬编码的安装目录。 除非你想干点什么特别的事情, 并且想得到类似没有找到postgres这样的错误, 否则必须使用这个选项。
在init模式中,这个选项类似地指定 initdb可执行文件的位置。
只打印错误,而不打印提示性信息。
当等待启动或者关闭完成的时候,等待的最大秒数,缺省是60秒。
打印pg_ctl版本并且退出。
等待启动或者停止的完成。这是停止的缺省选项,而不是启动的。 当等待启动的时候,pg_ctl反复尝试连接到服务器。 当等待停止的时候,pg_ctl等待服务器删除PID文件。 该选项允许启动时SSL缩写项。 pg_ctl返回基于成功启动或者停止的退出码。
不等待启动或者停止的完成。这是启动和重启的缺省。
显示关于pg_ctl命令行参数的帮助,并且退出。
缺省数据目录位置。
pg_ctl, 类似于大多数其它的PostgreSQL功能, 也可以使用通过libpq支持的环境变量(参阅Section 31.14)。 其它的服务器变量,参阅postgres。
这个文件存在于数据目录中是为了帮助pg_ctl 判断服务器当前是否在运行。
如果这个文件存在于数据目录中,那么 pg_ctl(在restart模式下) 将把文件的内容当作传递给postgres命令的选项传递过去, 除非被-o选项覆盖。 在status模式中显示这个文件的内容。
启动服务器:
$ pg_ctl start
启动服务器,等待直到服务器接受连接:
$ pg_ctl -w start
使用端口5433启动服务器,而且不带fsync
运行,使用:
$ pg_ctl -o "-F -p 5433" start