Назад | Перейти на главную страницу

Как заставить / proc / [pid] / cmdline содержать аргументы команды?

Я столкнулся с проблемой, когда некоторые из моих серверов Ubuntu / Debian не отображают аргументы, переданные в rake ни в top, ни в ps. Я отследил эту проблему до изменения вывода, предоставленного / 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) (dannf@debian.org) (gcc версия 4.3.5 (Debian 4.3.5-4)) # 1 SMP, вс, 23 сентября, 10:07:46 UTC 2012

и

Linux версии 3.2.0-23-generic (buildd @ casted) (gcc версии 4.6.3 (Ubuntu / Linaro 4.6.3-1ubuntu4)) # 36-Ubuntu SMP Вт, 10 апреля 20:39:51 UTC 2012

Интересно, что эти серверы, похоже, правильно отображают полную командную строку, включая аргументы, для большинства команд, которые я вижу, за исключением rake.

Кто-нибудь знает, как я могу получить полную командную строку, включая аргументы, для вывода в cmdline на этих серверах? Я очень надеюсь, что это не потребует полной перекомпиляции ядра (с которой у меня очень мало опыта).

- РЕДАКТИРОВАТЬ - Предполагалось, что именно rake отвечает за установку содержимого / proc / [pid] / cmdline, но это не согласуется с тем фактом, что мы используем ту же версию rake ( 0.8.7) на серверах, которые предоставляют и не предоставляют нам параметры командной строки, вызываемые rake.

Короткий ответ: вы не можете.

Только сам процесс имеет какое-либо влияние по содержанию /proc/$pid/cmdline. Некоторые инструменты (ab) используют это, чтобы переопределить отображение top и ps. Так что либо эти экземпляры rake сделали это, либо у них просто нет аргументов для начала.

Если rake использует этот трюк, а вы этого не хотите, возможно, документация по rake расскажет вам, как отключить такое поведение.