如何通过 psql 关闭 postgres?

Kar*_*ter 2 postgresql psql shutdown

推荐的关闭方式postgres是发送一个代表不同关闭模式(快速、智能、立即)的信号,或者在非 Linux 操作系统上使用初始化管理器(initdsystemd、 等)或它们的等效方法。在集装箱环境中它有时更方便,通过以获得psqldocker exec,从而更方便的通过停止服务器psql。有没有办法做到这一点(假设已授予特权)?

该解决方案可能很棘手,因为这主要用于postgres在开发环境中停止删除 PostgreSQL 数据目录。

CL.*_*CL. 5

文件告诉你一个信号发送到主postgres进程,或让pg_ctl这样做。

在 SQL 中,可以从 中提取主进程的 PID pg_read_file('postmaster.pid'),但pg_cancel_backend()不接受此 PID。

但是,您应该能够使用 COPY 执行这些命令(取决于 postgres OS 用户拥有的权限):

COPY (SELECT 1) TO PROGRAM 'kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`';
Run Code Online (Sandbox Code Playgroud)
COPY (SELECT 1) TO PROGRAM 'pg_ctl -D /usr/local/pgsql/data stop';
Run Code Online (Sandbox Code Playgroud)