Несколько процессов с одинаковым именем - PullRequest
3 голосов
/ 10 ноября 2010

У меня есть приложение, работающее в Linux 2.6.13 и WindRiver Linux 3.0. В Linux 2.6.13, когда я делаю ...

ps -eaf | grep myapplication

... вывод показывает несколько записей «myapplication».

Если я даю ту же команду в WindRiver Linux 3.0, в выводе отображается только одна запись «myapplication»

Связана ли разница с используемой ОС? Пожалуйста, скажите мне причину этого?

Ответы [ 4 ]

6 голосов
/ 10 ноября 2010

Вероятно, это связано с используемой библиотекой потоков и / или версией ядра.

Старая (теперь очень старая) библиотека потоков "Linuxthreads", используемая для отображения каждого потока как процесса "верхнего уровня", который будет отображаться непосредственно в / proc и иметь отдельный PID.Это был один из многих его недостатков, которые были исправлены:

Новая (теперь не очень новая) библиотека потоков NPTL, которая на протяжении многих лет включена в каждый новый дистрибутив, может использовать функции ядра длясделать темы появляться под тем же PID.Потоки все еще там, но теперь находятся в подкаталоге «task» в / proc, поэтому они обычно игнорируются «ps» (вы все равно можете видеть их, если хотите, с соответствующей опцией).API потоков posix (более или менее; более новые делают больше, чем более старые).Я ожидаю, что рассматриваемые процессы были многопоточными.

Все еще можно увидеть программы, связанные с Linuxthreads, если они статически связаны давным-давно.Современные ядра поддерживают это просто отлично.

0 голосов
/ 10 ноября 2010

Вы можете использовать "ps -efm", чтобы вывести список процессов и потоков, связанных с ними.Некоторые системы показывают потоки с тем же именем, что и исполняемый файл.Там вы увидите, что потоки ядра отображаются с "[]".

0 голосов
/ 10 ноября 2010

В Linux реализация потока не сильно отличается от полного процесса, см. man clone. Я подозреваю, что вы просто используете две разные команды ps с разными настройками по умолчанию. ps --help покажет вам, как составить список всех потоков каждого процесса.

0 голосов
/ 10 ноября 2010

Возможно, grep myapplication также указан в списке, и поэтому есть несколько записей.Если нет, это зависит от того, что делает ваше приложение, возможно, вызывает себя и т. Д. Вам нужно будет предоставить больше информации или по крайней мере ps -eaf | grep myapplication вывод.

...