Name
pg_ctl -- 启动,停止和重起
PostgreSQL
Synopsis
pg_ctl
start [-w] [-s] [-D
datadir
] [-l
filename
] [-o
options
] [-p
path
]
pg_ctl
stop [-W] [-s] [-D
datadir
] [-m
s[mart] | f[ast] | i[mmediate]
]
pg_ctl
restart [-w] [-s] [-D
datadir
] [-m
s[mart] | f[ast] | i[mmediate]
] [-o
options
]
pg_ctl
reload [-s] [-D
datadir
]
pg_ctl
status [-D
datadir
]
描述
pg_ctl
是一个用于启动,停止,
或者重起
postmaster
PostgreSQL
后端服务器,或者显示一个运行着的
postmaster 的状态的工具,
尽管我们可以手动启动 postmaster,但是
pg_ctl
封装了重新定向日志输出,
与终端和进程组合理分离,以及另外提供了一个选项用于有控制的关闭.
在
start
模式里会启动一个新的 postmaster.
服务器是在后台启动的,标准输入被附着到了
/dev/null
上.如果使用了
-l
,那么标准输出和标准错误
被定向到一个日志文件,要么就是重新定向到
pg_ctl
的标准输出(而不是标准错误).
如果没有选定日志文件,
pg_ctl
的标准输出
应该重新定向到一个文件或者用管道输出到另外一个进程,比如那些
日志旋转程序,否则,postmaster 将把它的输出写到控制终端(在后台)
并且将不会脱离 shell 的进程组.
在
stop
模式下,那个正在特定书局目录运行的
postmaster 被关闭.你可以用
-m
选项选择三种
不同的关闭模式∶
"Smart"
模式等待所有客户端中断联接.
这个是缺省.
"Fast"
模式并不等待客户端中断联接.
所有活跃事务都被回卷并且客户端都强制断开.
"Immediate"
模式将在没有干净
关闭的情况下退出.这么做将导致在重新启动的时候的恢复.
restart
实际上是先执行一个停止,然后紧跟一个
启动.它允许变换 postmaster 命令行的选项.
reload
模式简单地给 postmaster 发送一个
SIGHUP
信号,导致它重新读取她的配置文件
(
postgresql.conf
,
pg_hba.conf
,
等等)这样就允许修改配置文件选项而不用完全重启系统来使之生效.
status
模式监查一个 postmaster 是否在运行,
如果是,那么显示其
PID
和调用它的命令行选项.
选项
-
-D
datadir
-
声明该数据库文件的文件系统位置.
如果忽略这个选项,使用环境变量
PGDATA
.
-
-l
filename
-
把服务器日志输出附加在
filename
文件上.
如果该文件不存在,那么创建它.掩码设置为 077,
因此缺省时是不允许从其它用户向日志文件访问的.
-
-m
mode
-
声明关闭模式.
mode
可以是
smart
,
fast
, 或者
immediate
,或者是这三个之一的第一个字母.
-
-o
options
-
声明要直接传递给
postmaster
的选项.
参数通常都用单或者双引号包围以保证它们作为一个整体传递.
-
-p
path
-
声明
postmaster
可执行文件的位置.
缺省时 postmaster 是从和 pg_ctl 相同的目录取出,如果不是,
那么九十写死的安装目录.除非你想干点什么特别的事情,并且
得到类似"没有找到 postmaster"这样的错误,否则没有必要使用
这个选项.
-
-s
-
只打印错误,而不打印提示性信息.
-
-w
-
等待启动或者关闭的完成.在 60 秒后超时.
这个参数是关闭时的缺省值.
-
-W
-
不等待启动或者停止的完成.这是启动和重起的缺省.
文件
如果在数据目录里存在
postmaster.opts.default
文件,那么该文件将作为选项传递给
postmaster
, 除非被
-o
选项覆盖.
例子
启动 postmaster
启动
postmaster
:
$
pg_ctl start
启动
postmaster
的一个例子,
等到 postmaster 启动了才退出:
$
pg_ctl -w start
用于一个
postmaster
使用端口 5433,而且不带
fsync
运行,使用:
$
pg_ctl -o "-F -p 5433" start
停止 postmaster
$
pg_ctl stop
停止 postmaster,使用
-m
开关允许我们控制
如何
把后端停下来.
-w
等待 postmaster 停止.
-m
声明后端的停止模式.
重起 postmaster
这个命令几乎等于先停止
postmaster
然后再启动她,只不过 pg_ctl 保存并重新使用上一次运行 postmaster 的
命令行参数.
重起
postmaster
的最简单的方法是:
$
pg_ctl restart
重起
postmaster
,
等待其停止和重起:
$
pg_ctl -w restart
使用 5433 重起并且重起后关闭 fsync:
$
pg_ctl -o "-F -p 5433" restart
显示 postmaster 状态
下面是来自
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'
这是在重起模式里使用的命令行.
虫子
等待启动的完成这个概念定义得还不那么完善,如果你设置了
只能手工联接的访问控制,那么它可能会失效.
我们应该避免这样的情况.
|