Ubuntu执行top -c时PostgreSQL进程方括号内数值的含义
top -c 输出中PostgreSQL进程旁方括号数值的含义
这个方括号内的数值就是对应进程的操作系统PID,不属于PostgreSQL自定义的内部标识,没有特殊的业务语义。
出现这个带数字的方括号,本质是Ubuntu内置top工具(基于procps-ng开发)的长命令行截断逻辑导致的:
- 执行
top -c后,工具会展开显示每个进程的完整启动命令行,但顶部COMMAND列的显示宽度是固定的。PostgreSQL的进程命令行本身内容偏长,会附带进程类型、连接用户名、数据库名、客户端地址、当前执行的查询等信息,很容易超出列的显示宽度。 - 为了避免长命令行被直接截断后,所有
postgres开头的进程显示完全趋同、无法快速区分,procps-ng的top会在命令行的截断位置插入方括号,把当前进程的PID放在方括号内,作为截断后的定位标识。 - 你可以把这个数值和
ps -e -o pid,comm | grep postgres的输出做对比,会发现二者完全对应。
常见误区:不要把这个带数字的方括号和内核线程的标识混淆。内核线程没有用户态命令行,top会把它的进程名整体用方括号包裹(例如
[kworker/u256:0]),不会在方括号内放置纯数字PID,二者的显示逻辑完全不同。
内容的提问来源于stack exchange,提问作者andschar
相关产品推荐
相关产品推荐

