例如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
这只不过是一个视觉分隔符,用于区分主流程和子流程。