重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 123|回复: 0
打印 上一主题 下一主题

linux kill PG 后端进程 与 pg_ctl kill 对应关系

[复制链接]
跳转到指定楼层
楼主
发表于 2026-3-15 20:34:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 PostgreSQL 里,pg_ctl kill 其实只是一个 信号发送工具,本质上就是帮你向 PostgreSQL 进程发送 Linux signal。
kill -15 对应的就是 SIGTERM。

而 pg_ctl kill 用的是 信号名称简写。

一、kill -15 对应的 pg_ctl 命令
Linux:

kill -15 <pid>
等价于:

pg_ctl kill TERM <pid>
也就是:

SIGTERM
二、pg_ctl kill 支持的常见信号
pg_ctl kill SIGNAL pid
例如:

Linux        pg_ctl        信号        PostgreSQL 含义
kill -2        pg_ctl kill INT        SIGINT        cancel query
kill -15        pg_ctl kill TERM        SIGTERM        优雅终止
kill -1        pg_ctl kill HUP        SIGHUP        reload config
kill -9        pg_ctl kill KILL        SIGKILL        强制杀进程
kill -3        pg_ctl kill QUIT        SIGQUIT        fast shutdown
示例:

pg_ctl kill TERM 2000
等价:

kill -15 2000
三、不同信号对 PostgreSQL backend 的影响
1 SIGINT(取消 SQL)
kill -2 <pid>
等价:

pg_ctl kill INT <pid>
效果:

只取消当前 SQL
连接保持
对应 SQL:

SELECT pg_cancel_backend(pid);
2 SIGTERM(优雅终止)
kill -15 <pid>
等价:

pg_ctl kill TERM <pid>
效果:

回滚事务
释放锁
关闭连接
对应 SQL:

SELECT pg_terminate_backend(pid);
3 SIGQUIT(立即退出)
kill -3 <pid>
等价:

pg_ctl kill QUIT <pid>
效果:

快速退出
不做完整 cleanup
这个信号通常用于:

fast shutdown
4 SIGKILL(强制杀死)
kill -9 <pid>
等价:

pg_ctl kill KILL <pid>
效果:

不可捕获
直接杀死
不建议使用
四、PostgreSQL 官方推荐方式
优先顺序:

SQL 方式

SELECT pg_cancel_backend(pid);
SELECT pg_terminate_backend(pid);
OS 信号

kill -15 pid
最后手段

kill -9 pid
五、一个小知识(很多人不知道)
pg_ctl kill 不要求 PostgreSQL 正在运行。

它只是一个:

signal sender
例如:

pg_ctl kill HUP 1234
其实就是:

kill -1 1234
所以很多 DBA 其实直接用:

kill -15
六、总结

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2026-4-17 22:16 , Processed in 0.323907 second(s), 23 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表