Suchen Sie, *wo* sich die ausführbare Datei für einen aktuell laufenden Prozess befindet

Suchen Sie, *wo* sich die ausführbare Datei für einen aktuell laufenden Prozess befindet

Wenn ich zwei ausführbare Dateien ( /path/to/gcc/myapp.exe, und /path/to/intel/myapp.exe) habe, von denen eine mit einem Intel-Compiler und die andere mit dem Standard-GCC kompiliert wurde, werden beim Ausführen beider Dateien in topnur angezeigt myapp. Wenn ich beide ausführe und Prozesse als ausgeführt werden myapp, gibt es dann eine Möglichkeit herauszufinden, welcher Prozess aus welcher ausführbaren Datei stammt?

Wir haben eine Menge Apps auf unserem Cluster installiert und mich interessiert nicht nur, welche Apps am häufigsten genutzt werden, sondern auch, welcheVersionender Apps werden verwendet. Wenn ich 500 Ausführungen sehe R, möchte ich wissen, ob 100 davon von /path/to/R-3.2.1/intel/Rund die anderen 400 von usw. stammen /path/to/R-3.1.3/gcc/R. Wie kann ich das tun?

Antwort1

Sie können dies mit dem Dateisystem tun /proc, wie in derproc(5)Handbuchseite:

/proc/[pid]/exe

Unter Linux 2.2 und höher ist diese Datei ein symbolischer Link, der den tatsächlichen Pfadnamen des ausgeführten Befehls enthält.

Denn es ist einsymbolischer Linklesen Sie dieZiel(Führen Sie einen aus, ls -lum den Pfadnamen anzuzeigen).

Damit [pid]ist natürlich eine Prozess-ID für die jeweilige ausführbare Datei gemeint, an der Sie zur Laufzeit interessiert sind.

(Es ist unwahrscheinlich, dass Sie ein System mit einem so alten Linux-Kernel haben, daher sollte „funktioniert immer“ gut genug sein.)

Um eine Zählung zu erhalten, benötigen Sie lediglich ein Skript, das alle Verzeichnisse durchgeht, /procdie Sie besitzen (da Sie die Programme ausführen, können Sie deren /procDaten sehen) und die Pfadnamen mit denen abgleicht, die Sie interessieren. DasreadlinkDas Programm ist beispielsweise in Bash-Skripten nützlich (und da es Teil von ist coreutils, haben Sie es wahrscheinlich auf einem Linux-System).

Antwort2

Starten Sie dazu topund drücken Sie dann cauf Ihrer Tastatur, um zur vollständigen Pfadansicht zu wechseln.

Antwort3

Wenn diese Prozesse mit unterschiedlichen Befehlszeilen ausgeführt werden (beispielsweise unter Verwendung des vollständigen Pfads), können Sie drücken, cum die vollständige Befehlszeile, mit der der Prozess ausgeführt wurde, anzuzeigen/auszublenden.

verwandte Informationen