`ps aux` 的“COMMAND”字段中的名称来自哪里?

`ps aux` 的“COMMAND”字段中的名称来自哪里?

据我了解,它显示带有参数的命令,或者在不可用时显示方括号中的命令。

但是,诸如乘客工作者 ruby​​ 实例之类的进程的名称从何而来,它们显示为:

root@XXX:~# ps aux | grep Rails
webuser    2273  0.0  3.2  86968 57500 ?        S    17:38   0:00 Rails: /var/websites/app

...我如何启动进程并设置这样的字符串?

答案1

我相信它是通过 setproctitle 函数完成的。

 #include <sys/types.h>
 #include <unistd.h>
 void
 setproctitle(const char *fmt, ...);

 The setproctitle() library routine sets the process title that appears on
 the ps(1) command.

对于 Ruby 来说,有一个stackoverflow 帖子关于在没有第三方库的情况下做到这一点。

答案2

通常你需要直接改变 argv,这是一个例子: http://stupefydeveloper.blogspot.com/2008/10/linux-change-process-name.html

相关内容