2

Если у меня есть 2 исполняемых файла (/path/to/gcc/myapp.exe и /path/to/intel/myapp.exe), где один скомпилирован с помощью компилятора Intel, а другой - со стандартным gcc, при запуске обоих отобразится в top как просто myapp . Если я запустил оба из них и у меня были процессы, запущенные как myapp , есть ли способ узнать, какой процесс происходит из какого исполняемого файла?

На нашем кластере установлено несколько приложений, и меня интересует не только то, какие приложения используются чаще всего, но и какие версии приложений используются. Если я вижу 500 случаев запуска R , я хотел бы знать, если 100 из них из /path/to/R-3.2.1/intel/R а остальные 400 из /path/to/R-3.1.3/gcc/R и т.д. Как я могу это сделать?

3 ответа3

4

Вы можете сделать это с файловой системой /proc , как отмечено на странице справочника proc(5) :

/proc/[pid]/exe

В Linux 2.2 и более поздних версиях этот файл является символической ссылкой, содержащей фактический путь к исполняемой команде.

Поскольку это символическая ссылка, вы можете прочитать цель (выполните ls -l чтобы увидеть путь).

[pid] конечно, означает идентификатор процесса для конкретного исполняемого файла, который вас интересует, во время выполнения.

(Маловероятно, что у вас есть система со старым ядром Linux, поэтому "всегда работает" должно быть достаточно).

Чтобы получить счетчик, вам просто нужен скрипт, который проходит через /proc , для каждого каталога, которым вы владеете (поскольку вы запускаете программы, вы можете видеть их данные /proc ), и сопоставлять имена путей с теми, которые вас интересуют. , Программа readlink , например, полезна в скриптах bash (и, поскольку она является частью coreutils , вы, вероятно, используете ее в системе Linux).

2

Для этого вы можете запустить top , а затем нажать c на клавиатуре, чтобы переключиться в режим полного пути.

0

Если эти процессы выполняются с другой командной строкой (например, с использованием полного пути), вы можете нажать c чтобы показать / скрыть полную командную строку, с которой был выполнен процесс.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .