我遇到了一个问题,我的一些 Ubuntu/Debian 服务器在 top 或 ps 中不显示传递给 rake 的参数。我已将此问题归结为 /proc/[pid]/cmdline 给出的输出变化。这个文件似乎控制着 ps 和 top 所显示的内容。在正确显示参数的服务器上,cmdline 文件的内容类似于:
ruby^@/home/user/.rvm/gems/ree-1.8.7-2011.03/bin/rake^@log_file_tailer:run^@
但是,在没有显示 rake 参数的服务器上,cmdline 的输出如下所示
/home/user/.rvm/gems/ree-1.8.7-2011.03/bin/rake^@ ^@^@^@^@^@
也就是说,文件的内容只有两行长,但不包含有关传递给 rake 的参数的任何信息。
FWIW,我有两台以不太有用的格式(缺少参数的格式)输出命令行的服务器正在运行
Linux 版本 2.6.32-5-amd64(Debian 2.6.32-46)([电子邮件保护])(gcc 版本 4.3.5(Debian 4.3.5-4))#1 SMP 2012 年 9 月 23 日星期日 10:07:46 UTC
和
Linux 版本 3.2.0-23-generic (buildd@crested) (gcc 版本 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu4) ) #36-Ubuntu SMP 2012 年 4 月 10 日星期二 20:39:51 UTC
有趣的是,这些服务器似乎正确地显示了我看到的大多数命令(不包括 rake)的完整命令行,包括参数。
有人知道如何才能将完整的命令行(包括参数)输出到这些服务器上的 cmdline 吗?我非常希望这不需要重新编译整个内核(我对此几乎没有经验)。
-- 编辑 -- 有人推测只有 rake 负责设置 /proc/[pid]/cmdline 的内容,但这与我们在服务器上运行相同版本的 rake(0.8.7)的事实不符,这些服务器为我们提供和不提供 rake 调用的命令行参数。
答案1
简短的回答是:你不能。
只有过程本身有任何影响在 的内容上/proc/$pid/cmdline
。一些工具(滥用)使用它来覆盖 top 和 ps 显示的内容。因此,要么是那些 rake 实例已经这样做了,要么就是它们一开始就没有任何参数。
如果 rake 使用了这个技巧,而您不想这样做,那么 rake 文档可能会告诉您如何禁用这种行为。