当您运行 Postgres 数据库并检查所有进程时,ps
您会看到注释,这些注释很可能既不是执行程序的名称,也不是其参数。它们是什么?
$ ps ax | grep [p]ostgres:
1066 ? Ss 0:00 postgres: checkpointer process
1067 ? Ss 0:00 postgres: writer process
1068 ? Ss 0:00 postgres: wal writer process
1069 ? Ss 0:00 postgres: autovacuum launcher process
1070 ? Ss 0:00 postgres: stats collector process
我不确定这是否特定于 Postgres。
答案1
任何程序都可以改变ps
调用它的程序,请参阅man 3 setproctitle
:
NAME
setproctitle — set process title
LIBRARY
Utility functions from BSD systems (libbsd, -lbsd)
SYNOPSIS
#include <sys/types.h>
#include <bsd/unistd.h>
void
setproctitle_init(int argc, char *argv[], char *envp[]);
void
setproctitle(const char *fmt, ...);
DESCRIPTION
The setproctitle() library routine sets the process title that appears on
the ps(1) command.