
# 服务器信号函数
服务器信号函数向其他服务器线程发送控制信号。只有系统管理员有权执行以下函数。
#### pg_cancel_backend(pid int)
描述：取消一个后端线程正在执行的语句。
返回值类型：Boolean
备注：pg_cancel_backend向由pid标识的后端线程发送一个查询取消（SIGINT）信号。一个活动的后端线程的PID可以从[PG_STAT_ACTIVITY](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-2008.html#ZH-CN_TOPIC_0000002558948443)视图的pid字段找到，或者在服务器上用ps列出数据库线程。具有SYSADMIN权限的用户，后端线程所连接的数据库的属主，后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。
#### pg_cancel_session(pid bigint, sessionid bigint)
描述：线程池模式下，取消一个活跃状态会话正在执行的语句。多租场景下，PDB中调用该函数仅能取消本PDB的会话，Non-PDB调用该函数可对全局进行操作。
返回值类型：Boolean
备注：pg_cancel_session的入参可以通过pg_stat_activity中的pid字段和sessionid的字段查询，可以取消线程池模式下，活跃状态会话正在执行的语句。当入参pid和sessionid相同，且均为线程id时，功能和pg_cancel_backend相同。
#### pg_reload_conf()
描述：导致所有服务器线程重新装载它们的配置文件。多租场景下，PDB内部禁用该函数。
返回值类型：Boolean
备注：pg_reload_conf给服务器发送一个SIGHUP信号，导致所有服务器线程重新装载配置文件。
#### pg_rotate_logfile()
描述：滚动服务器的日志文件。多租场景下，non-PDB调用该函数时正常运行，PDB调用该函数时报错。
返回值类型：Boolean
备注：pg_rotate_logfile给日志文件管理器发送信号，使之立即切换到一个新的输出文件。这个函数只有在redirect_stderr用于日志输出的时候才有用，否则不会产生日志文件管理器子线程。
#### pg_terminate_backend(pid int)
描述：终止一个后台线程。
返回值类型：Boolean
备注：如果成功，函数返回true，否则返回false。具有SYSADMIN权限的用户，后端线程所连接的数据库的属主，后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。若执行该函数后未成功终止目标会话，则会强制关闭该会话和客户端的socket连接。
![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
该函数可终止非线程池的线程、活跃状态的线程池线程，但无法终止非活跃状态的线程池线程。
示例：
```
gaussdb=# SELECT pid from pg_stat_activity;
       pid       
-----------------
 140657876268816
(1 rows)
gaussdb=# SELECT pg_terminate_backend(140657876268816);
 pg_terminate_backend 
----------------------
 t
(1 row)
```
#### pg_terminate_session(pid int64, sessionid int64)
描述：线程池模式下，终止一个后台session。多租场景下，PDB中调用该函数仅能终止本PDB的会话，Non-PDB调用该函数可对全局进行操作。
返回值类型：Boolean
备注：如果成功，函数返回true，否则返回false。具有SYSADMIN权限的用户、会话所连接的数据库的属主、会话的属主、或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。若执行该函数后未成功终止目标会话，则会强制关闭该会话和客户端的socket连接。
![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
当入参pid和sessionid相同，且均为线程id时，该函数可终止非线程池的线程、活跃状态的线程池线程。
当入参pid和sessionid不同时，该函数可终止活跃状态的会话，或关闭非活跃状态会话和客户端的socket连接。
#### pg_terminate_active_session_socket(pid int64, sessionid int64)
描述：关闭一个活跃session和客户端的socket连接。
返回值类型：Boolean
备注：如果成功，函数返回true，否则返回false。具有SYSADMIN权限的用户，后端线程所连接的数据库的属主，后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。
#### terminate_session_has_temp_file()
描述：中断所有正在打开临时文件的会话。
返回值类型：void
备注：仅系统管理员有权限执行该函数。该函数仅由CM组件在特定流程中自动调用，不建议用户手动进行调用。
