postgres 进程命令行中的冒号是什么?

postgres 进程命令行中的冒号是什么?

例如Postgres 进程命令行就像

postgres   794     1  0 Nov06 ?        00:00:03 /usr/pgsql-9.3/bin/postgres -D /var/lib/pgsql/9.3/data -p 5432
postgres   857   794  0 Nov06 ?        00:00:00   postgres: logger process   
postgres   871   794  0 Nov06 ?        00:00:00   postgres: checkpointer process   
postgres   872   794  0 Nov06 ?        00:00:00   postgres: writer process   
postgres   873   794  0 Nov06 ?        00:00:00   postgres: wal writer process   
postgres   874   794  0 Nov06 ?        00:00:03   postgres: autovacuum launcher process   
postgres   875   794  0 Nov06 ?        00:00:07   postgres: stats collector process   

为什么有冒号(:)?

答案1

因为根据它的文档

在大多数 Unix 平台上,PostgreSQL 会修改 ps 报告的命令标题,以便可以轻松识别各个服务器进程。

这并不是 Postgres 独有的。任何进程都可以修改存储在其读写内存中的命令行参数,这将用ps* 表示;看curl 如何保护密码不出现在 ps 输出中?再举个例子。

*正如链接问题中的评论所述,它符合 UNIX 系统的标准,将进程的原始命令行参数存储在该进程的读写内存之外,并报告ps这些原始参数,而不管进程对其读写内存进行的任何更改。这是非常罕见的,但并非不可能或闻所未闻。因此,Postgres 文档中可能是“大多数 Unix 平台”限定词。

答案2

这只不过是一个视觉分隔符,用于区分主流程和子流程。

相关内容