如何让 /proc/[pid]/cmdline 包含命令参数?

wbh*_*ing 4 ubuntu debian top process ps

我遇到了一个问题,我的一些 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^@
Run Code Online (Sandbox Code Playgroud)

但是,在不显示 rake 参数的服务器上,cmdline 的输出看起来像

/home/user/.rvm/gems/ree-1.8.7-2011.03/bin/rake^@                                                                                                        ^@^@^@^@^@
Run Code Online (Sandbox Code Playgroud)

也就是说,文件的内容有两行长,但不包含任何有关传递给 rake 的参数的信息。

FWIW,我拥有的两台服务器以不太有用的格式(缺少参数的格式)输出 cmdline 正在运行

Linux 版本 2.6.32-5-amd64(Debian 2.6.32-46)(dannf@debian.org)(gcc 版本 4.3.5(Debian 4.3.5-4))#1 SMP Sun Sep 23 10:07:46 UTC 2012

Linux 版本 3.2.0-23-generic(buildd@crested)(gcc 版本 4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu4))#36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012

有趣的是,对于我看到的除 rake 之外的大多数命令,这些服务器似乎确实正确显示了完整的命令行,包括参数。

有谁知道如何获得完整的命令行(包括参数)以输出到这些服务器上的 cmdline?我非常希望这不需要对内核进行完整的重新编译(我对此几乎没有经验)。

-- 编辑 -- 据推测是 soley rake 负责设置 /proc/[pid]/cmdline 的内容,但这与我们运行相同版本的 rake 的事实不符( 0.8.7) 在提供和不提供由 rake 调用的命令行参数的服务器上。

Den*_*ker 5

简短的回答是:你不能。

只有过程本身对 的内容有任何影响/proc/$pid/cmdline。一些工具 (ab) 使用它来覆盖 top 和 ps 显示的内容。所以要么那些 rake 实例已经这样做了,要么他们根本就没有任何论据。

如果 rake 使用此技巧,而您不希望它使用,则 rake 文档可能会告诉您如何禁用此行为。