app-pg-ctl.md 11.0 KB
Newer Older
李少辉-开发者's avatar
李少辉-开发者 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246
## 皮克\_控制

皮克\_ctl — 初始化、启动、停止或控制 PostgreSQL 服务器

## 概要

`pg_ctl` `初始化[分贝]` [`-D` *`数据目录`*][`-s`] [`-o` *`initdb 选项-]

`pg_ctl` `开始` [`-D` *`数据目录`*][`-l` *`filename`*] [`-W`][`-t` *`seconds`*] [`-s`][`-o` *`options`*] [`-p` *`小路`*][`-c`]

`pg_ctl` `停止` [`-D` *`数据目录`*]`-m` `聪明的]` \| `快速地]` \| `即时]` ] [`-W`][`-t` *`seconds`*] [`-s`]

`pg_ctl` `重新开始` [`-D` *`数据目录`*]`-m` `聪明的]` \| `快速地]` \| `即时]` ] [`-W`][`-t` *`seconds`*] [`-s`][`-o` *`options`*] [`-c`]

`pg_ctl` `重新加载` [`-D` *`数据目录`*][`-s`]

`pg_ctl` `状态` [`-D` *`数据目录`*]

`pg_ctl` `推动` [`-D` *`数据目录`*][`-w`] [`-t` *``*][`-s`]

`pg_ctl` `对数旋转` [`-D` *`数据目录`*][`-s`]

`pg_ctl` `` *`信号名称`* *`process_id`*

在 Microsoft Windows 上,还:

`pg_ctl` `登记` [`-D` *`数据目录`*][`-n` *`servicename`*] [`-U` *`用户名`*][`-p` *`password`*] [`-S` `汽车]` \| `要求]` ][`-e` *`source`*] [`-W`][`-t` *`seconds`*] [`-s`][`-o` *`options`*]

`pg_ctl` `注销` [`-N` *`服务名称`*]

## 描述

皮克\_ctl 是用于初始化 PostgreSQL 数据库集群、启动、停止或重新启动 PostgreSQL 数据库服务器的实用程序([postgres](app-postgres.html)),或显示正在运行的服务器的状态。虽然可以手动启动服务器,pg_ctl 封装了诸如重定向日志输出和正确地从终端和进程组中分离等任务。它还为受控关闭提供了方便的选项。

这`在里面`要么`初始化数据库`模式创建一个新的 PostgreSQL 数据库集群,即将由单个服务器实例管理的数据库集合。这种模式调用`初始化数据库`命令。看[初始化数据库](app-initdb.html)详情。

`开始`模式启动一个新服务器。服务器在后台启动,其标准输入附加到`/dev/null`(要么``在 Windows 上)。在类 Unix 系统上,默认情况下,服务器的标准输出和标准错误被发送到 pg_ctl 的标准输出(不是标准错误)。pg的标准输出\_然后 ctl 应该被重定向到一个文件或通过管道传输到另一个进程,例如像 rotatelogs 这样的日志轮换程序;否则`postgres`将其输出写入控制终端(从后台),并且不会离开 shell 的进程组。在 Windows 上,默认情况下服务器的标准输出和标准错误被发送到终端。这些默认行为可以通过使用来改变`-l`将服务器的输出附加到日志文件。使用任一`-l`或建议使用输出重定向。

`停止`mode 关闭在指定数据目录中运行的服务器。可以选择三种不同的关机方式`-m`选项。“智能”模式不允许新连接,然后等待所有现有客户端断开连接并完成任何在线备份。如果服务器处于热备状态,一旦所有客户端断开连接,恢复和流复制将终止。“快速”模式(默认)不等待客户端断开连接,并将终止正在进行的在线备份。回滚所有活动事务并强制断开客户端连接,然后关闭服务器。“立即”模式将立即中止所有服务器进程,无需彻底关闭。此选择将导致下一次服务器启动期间的崩溃恢复周期。

`重新开始`模式有效地执行一个停止,然后是一个开始。这允许改变`postgres`命令行选项,或更改配置文件选项,如果不重新启动服务器就无法更改。如果在服务器启动期间在命令行上使用了相对路径,`重新开始`可能会失败,除非 pg_ctl 在与服务器启动期间相同的当前目录中执行。

`重新加载`模式只是发送`postgres`服务器处理一个 SIGHUP 信号,导致它重新读取其配置文件(`postgresql.conf`,`pg_hba.conf`, ETC。)。这允许更改不需要完全重新启动服务器即可生效的配置文件选项。

`地位`mode 检查服务器是否在指定的数据目录中运行。如果是,则显示服务器的 PID 和用于调用它的命令行选项。如果服务器没有运行,pg_ctl 返回退出状态 3.如果没有指定可访问的数据目录,pg_ctl 返回退出状态 4.推动

`mode 命令在指定数据目录中运行的备用服务器结束备用模式并开始读写操作。`对数旋转

`mode 轮换服务器日志文件。`有关如何将此模式与外部日志轮换工具一起使用的详细信息,请参阅[第 25.3 节](logfile-maintenance.html).

``mode 向指定进程发送信号。这在没有内置 kill 命令的 Microsoft Windows 上主要是有价值的。采用`- 帮助`查看支持的信号名称列表。

`登记`mode 将 PostgreSQL 服务器注册为 Microsoft Windows 上的系统服务。这`-S`选项允许选择服务启动类型,“自动”(系统启动时自动启动服务)或“需求”(按需启动服务)。

`注销`mode 取消注册 Microsoft Windows 上的系统服务。这取消了`登记`命令。

## 选项

`-c`\
`--核心文件`

尝试允许服务器崩溃以在可能的平台上生成核心文件,方法是解除对核心文件的任何软资源限制。通过允许从失败的服务器进程获取堆栈跟踪,这在调试或诊断问题时很有用。

`-D *`数据目录`*`\
`--pgdata=*`数据目录`*`

指定数据库配置文件的文件系统位置。如果省略此选项,则环境变量`PGD​​ATA`用来。

`-l *`文件名`*`\
`--log=*`文件名`*`

将服务器日志输出附加到*`文件名`*.如果文件不存在,则创建它。umask 设置为 077,因此默认情况下不允许其他用户访问日志文件。

`-m *`模式`*`\
`--模式=*`模式`*`

指定关闭模式。*`模式`*`聪明的`,`快速地`, 或者`即时`,或这三个中的一个的第一个字母。如果省略此选项,`快速地`是默认值。

`-o *`选项`*`\
`--选项=*`选项`*`

指定要直接传递给`postgres`命令。`-o`可以多次指定,并传递所有给定的选项。

*`选项`*通常应该用单引号或双引号括起来,以确保它们作为一个组传递。

`-o *`initdb 选项`*`\
`--选项=*`initdb 选项`*`

指定要直接传递给`初始化数据库`命令。`-o`可以多次指定,并传递所有给定的选项。

*`initdb 选项`*通常应该用单引号或双引号括起来,以确保它们作为一个组传递。

`-p *`小路`*`

指定的位置`postgres`可执行。默认情况下`postgres`可执行文件取自与`pg_ctl`,或失败,硬连线安装目录。没有必要使用此选项,除非您正在做一些不寻常的事情并得到错误`postgres`找不到可执行文件。

`在里面`模式,此选项类似地指定的位置`初始化数据库`可执行。

`-s`\
`- 无声`

仅打印错误,不打印信息性消息。

`-t *``*`\
`--超时=*``*`

指定等待操作完成时等待的最大秒数(请参阅选项`-w`)。默认值为`PGCTL超时`环境变量,如果未设置,则为 60 秒。

`-V`\
`- 版本`

打印 pg_ctl 版本并退出。

`-w`\
`- 等待`

等待操作完成。模式支持此功能`开始`,`停止`,`重新开始`,`推动`, 和`登记`,并且是这些模式的默认值。

等的时候,`pg_ctl`反复检查服务器的 PID 文件,在检查之间休眠一小段时间。当 PID 文件指示服务器已准备好接受连接时,则认为启动已完成。当服务器删除 PID 文件时,关闭被视为完成。`pg_ctl`根据启动或关闭的成功返回退出代码。

如果操作未在超时时间内完成(请参阅选项`-t`), 然后`pg_ctl`以非零退出状态退出。但请注意,该操作可能会在后台继续并最终成功。

`-W`\
`--无需等待`

不要等待操作完成。这与选项相反`-w`.

如果禁用等待,则触发请求的操作,但没有关于其成功的反馈。在这种情况下,必须使用服务器日志文件或外部监控系统来检查操作的进度和成功。

在 PostgreSQL 的早期版本中,这是默认值,除了`停止`模式。

`-?`\
`- 帮助`

显示关于 pg 的帮助\_ctl 命令行参数,然后退出。

如果指定了一个有效的选项,但与所选的操作模式无关,pg_ctl 忽略它。

### 适用于 Windows 的选项

`-e *`来源`*`

pg 的事件源名称\_作为 Windows 服务运行时用于记录到事件日志的 ctl。默认是`PostgreSQL`.请注意,这只控制从 pg 发送的消息\_ctl 本身;一旦启动,服务器将使用其指定的事件源[事件\_来源](runtime-config-logging.html#GUC-EVENT-SOURCE)范围。如果服务器在启动时很早就失败,在设置该参数之前,它也可能使用默认事件源名称记录`PostgreSQL`.

`-N *`服务名称`*`

要注册的系统服务的名称。此名称将用作服务名称和显示名称。默认是`PostgreSQL`.

`-P *`密码`*`

用户运行服务的密码。

`-S *`开始类型`*`

系统服务的启动类型。*`开始类型`*`汽车`, 要么`要求`,或这两个中的一个的第一个字母。如果省略此选项,`汽车`是默认值。

`-U *`用户名`*`

运行服务的用户的用户名。对于域用户,使用格式`域\用户名`.

## 环境

`PGCTL超时`

等待启动或关闭完成时等待的秒数的默认限制。如果未设置,则默认值为 60 秒。

`PGD​​ATA`

默认数据目录位置。

最多`pg_ctl`模式需要知道数据目录位置;因此,`-D`选项是必需的,除非`PGD​​ATA`已设置。

`pg_ctl`与大多数其他 PostgreSQL 实用程序一样,也使用 libpq 支持的环境变量(请参阅[第 34.15 节](libpq-envars.html))。

有关影响服务器的其他变量,请参阅[postgres](app-postgres.html).

## 文件

`邮递员.pid`

皮克\_ctl 检查数据目录中的这个文件以确定服务器当前是否正在运行。

`postmaster.opts`

如果这个文件存在于数据目录中,pg_ctl(在`重新开始`mode) 会将文件的内容作为选项传递给 postgres,除非被`-o`选项。该文件的内容也显示在`地位`模式。

## 例子

### 启动服务器

要启动服务器,等待服务器接受连接:

```
$ pg_ctl start
```

使用端口 5433 启动服务器,并且不运行`同步`, 采用:

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

### 停止服务器

要停止服务器,请使用:

```
$ pg_ctl stop
```

`-m`选项允许控制*如何*服务器关闭:

```
$ pg_ctl stop -m smart
```

### 重新启动服务器

重新启动服务器几乎等同于停止服务器并重新启动它,除了默认情况下,`pg_ctl`保存并重用传递给先前运行实例的命令行选项。要使用与以前相同的选项重新启动服务器,请使用:

```
$ pg_ctl restart
```

但如果`-o`已指定,它将替换任何先前的选项。要使用端口 5433 重新启动,请禁用`同步`重新启动时:

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

### 显示服务器状态

这是 pg 的示例状态输出\_控制:

```
$ pg_ctl status

pg_ctl: server is running (PID: 13718)
/usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data" "-p" "5433" "-B" "128"
```

第二行是将在重新启动模式下调用的命令。

## 也可以看看

[初始化数据库](app-initdb.html),[postgres](app-postgres.html)