Como obter / proc / [pid] / cmdline para conter argumentos de comando?

3

Estou me deparando com um problema em que alguns dos meus servidores Ubuntu / Debian não mostram os argumentos passados para rake no topo ou no ps. Eu rastreei este problema até uma variação na saída dada por / proc / [pid] / cmdline. Este é o arquivo que parece controlar o que é mostrado por ps e top. Nos servidores que mostram corretamente os argumentos, o conteúdo do arquivo cmdline é semelhante a:

ruby^@/home/user/.rvm/gems/ree-1.8.7-2011.03/bin/rake^@log_file_tailer:run^@

No entanto, nos servidores que não mostram argumentos de rake, a saída do cmdline se parece com

/home/user/.rvm/gems/ree-1.8.7-2011.03/bin/rake^@                                                                                                        ^@^@^@^@^@

Ou seja, o conteúdo do arquivo tem duas linhas, mas não contém nenhuma informação sobre os argumentos passados para o rake.

FWIW, os dois servidores que geram o cmdline no formato menos útil (o que falta argumentos) estão em execução

Versão 2.6.32-5-amd64 do Linux (Debian 2.6.32-46) ([email protected]) (gcc versão 4.3.5 (Debian 4.3.5-4)) # 1 SMP Sun Set 23 10: 07:46 UTC 2012

e

Versão Linux 3.2.0-23-generic (buildd @ crested) (gcc versão 4.6.3 (Ubuntu / Linaro 4.6.3-1ubuntu4)) # 36-Ubuntu SMP Ter 10 Abr 20:39:51 UTC 2012

Curiosamente, esses servidores parecem mostrar corretamente a linha de comando completa, incluindo argumentos, para a maioria dos comandos que eu vejo excluindo o rake.

Alguém sabe como posso obter a linha de comando completa, incluindo argumentos, para que seja enviada para o cmdline nesses servidores? Espero que isso não exija uma recompilação inteira do kernel (com a qual tenho pouca experiência).

- EDIT - Tem sido especulado que é o ancinho soley que é responsável por definir o conteúdo de / proc / [pid] / cmdline, mas isso não combina com o fato de que estamos executando a mesma versão do rake (0.8.7) os servidores que fazem e não nos dão os parâmetros de linha de comando invocados pelo rake.

    
por wbharding 14.02.2013 / 06:43

1 resposta

4

A resposta curta é: você não pode.

Apenas o processo em si tem alguma influência no conteúdo de /proc/$pid/cmdline . Algumas ferramentas (ab) usam isso para sobrescrever o que top e ps exibem. Então, essas instâncias do rake fizeram isso, ou simplesmente não têm argumentos para começar.

Se o rake usar esse truque e você não quiser, talvez a documentação do rake lhe diga como desabilitar esse comportamento.

    
por 14.04.2013 / 11:49