postgres [ -A 0 | 1 ] [ -B nbuffers ] [ -c name=value ] [ -d debug-level ] [ --describe-config ] [ -D datadir ] [ -e ] [ -E ] [ -f s | i | t | n | m | h ] [ -F ] [ -N ] [ -o filename ] [ -O ] [ -P ] [ -s | -t pa | pl | ex ] [ -S sort-mem ] [ -W seconds ] [ --name=value ] database
postgres [ -A 0 | 1 ] [ -B nbuffers ] [ -c name=value ] [ -d debug-level ] [ -D datadir ] [ -e ] [ -f s | i | t | n | m | h ] [ -F ] [ -o filename ] [ -O ] [ -p database ] [ -P ] [ -s | -t pa | pl | ex ] [ -S sort-mem ] [ -v protocol ] [ -W seconds ] [ --name=value ]
可执行程序 postgres 是真正处理查询的 PostgreSQL 服务器进程。 通常它是不会被直接调用的;而是启动一个 postmaster 多用户服务器。
上面的第二种形式就是 postmaster(1) 调用 postgres 的方法(只是概念上的,因为 postmaster 和 postgres 实际上是一样的程序); 我们不能这样直接调用它。第一种形式以交互单用户模式直接调用该服务器。 这种用法的主要用途是在 initdb 做初始化时用。有时候它被用做调试灾难性恢复。
当从 shell 上以交互模式调用时,用户可以输入查询并且结果会打印在屏幕上, 不过格式对开发人员更有用,对用户却差好多。 不过请记住,运行一个单用户服务器并不适合于调试该服务器, 因为没有实际的进程间通讯和锁动作发生。
当运行一个单用户服务器时,将把会话用户设置为 ID 为 1 的用户。 该用户不必实际存在,因此一个独立运行的服务器可以用于对某些意外损坏的系统表中进行手工恢复。 在独立运行模式下,系统隐含地赋予 ID 为 1 的用户超级用户权限。
如果 postgres 是由一个 postmaster(1) 启动的,那么它继承后者的所有选项集。另外 postgres 相关的选项可以用 -o 开关从 postmaster(1) 传递。
你可以通过设置一个配置文件来避免键入这些选项。 参阅Section 16.4获取细节。 有些(安全的)选项还可以从联接过来的客户端设置, 这样就获得了一种应用无关的方法。 比如,如果设置了 PGOPTIONS 环境变量, 那么基于 libpq 的客户端就都把那个字串传递给服务器, 会解释成 postgres 命令行选项。
选项 -A, -B, -c, -d, -D, -F, 和 --name 和 postmaster(1) 里的有相同的含义。只是 -d 0 避免 postmaster(1) 的调试级别传播到 postgres。
还有几个其他的选项可以声明,主要用于调试用途。 这些东西在这里列出只是给 PostgreSQL 系统开发人员使用的。 我们强烈反对使用这些选项。 另外这些选项的任何一项都可能在未来版本中消失而不加说明。
对于其它的在单用户模式里有一点点影响的环境变量,请参阅 postmaster(1).
要停止运行一个查询,使用 SIGINT 给正在运行该命令的 postgres 进程发信号。
要告诉 postgres 重新读取配置文件, 使用一个 SIGHUP 信号。 通常我们最好给 postmaster 发送 SIGHUP; postmaster 将随后 SIGHUP 他的每个子进程。 但是有时候我们可能想只让一个 postgres 进程重装载配置文件。
postmaster 使用 SIGTERM 告诉postgres进程正常退出, 而 SIGQUIT 是不经过正常清理的退出。 这些信号不应该由用户使用。 给一个 postgres 进程发送 SIGKILL 也是不明智的 —— postmaster 将把这个信号解释成一次在 postgres 里的崩溃, 并且会强制所有他的子 postgres 进程像在一个标准的崩溃-恢复过程里一样退出。
用下面这样的命令启动一个独立的服务器
postgres -D /usr/local/pgsql/data other-options my_database
通常,独立运行的服务器把换行符当做命令输入完成字符; 它还不懂分号的作用,因为那些东西是在 psql(1) 里的。 要想把一行分成多行写,你必需在除最后一个换行符以外的每个换行符前面敲一个反斜杠。
但是如果你使用 -N 命令行开关,那么换行符就不会中止命令输入。 服务器将从标准输入读取数据,直到碰到文件结尾(EOF), 然后把输入当做一个单个的命令字串处理。这个时候反斜杠-换行符就不再当做特殊情况处理。
要退出会话,键入EOF (通常是 Control+D)。 如果你已经使用了 -N,需要用两个连续的EOF来退出。
请注意独立运行的服务器不会提供复杂的行编辑功能(比如,没有命令行历史)。
initdb(1), ipcclean(1), postmaster(1)