2 votes

Trouver *où* se trouve l'exécutable d'un processus en cours d'exécution

Si j'ai 2 exécutables ( /path/to/gcc/myapp.exe y /path/to/intel/myapp.exe ) où l'un est compilé avec un compilateur intel et l'autre avec gcc standard, l'exécution des deux s'affichera dans top comme juste myapp . Si j'exécute les deux et que les processus s'exécutent en tant que myapp Est-ce qu'il y a un moyen de savoir quel processus provient de quel exécutable ?

Nous avons installé un grand nombre d'applications sur notre cluster et je suis intéressé, non seulement par les applications les plus utilisées, mais aussi par celles qui sont les plus efficaces. versions des applications sont utilisées. Si je vois 500 occurrences de R en cours d'exécution, j'aimerais savoir si 100 d'entre eux proviennent de /path/to/R-3.2.1/intel/R et les 400 autres proviennent de /path/to/R-3.1.3/gcc/R etc. Comment puis-je faire cela ?

4voto

Thomas Dickey Points 8167

Vous pouvez le faire avec le /proc comme indiqué dans le proc(5) page du manuel :

/proc/[pid]/exe

Sous Linux 2.2 et plus, ce fichier est un lien symbolique contenant le chemin d'accès réel de la commande exécutée.

Parce que c'est un lien symbolique vous pouvez lire le cible (faire un ls -l pour voir le nom du chemin).

El [pid] signifie bien sûr un process-ID pour l'exécutable particulier qui vous intéresse, au moment de l'exécution.

(Il est peu probable que vous disposiez d'un système utilisant un noyau Linux aussi ancien, donc "fonctionne toujours" devrait suffire).

Pour obtenir un compte, vous avez simplement besoin d'un script qui marche à travers /proc pour chaque répertoire que vous possédez (puisque vous exécutez les programmes, vous pouvez voir leur contenu). /proc ), et de faire correspondre les noms de chemin à ceux qui vous intéressent. Le site readlink par exemple, est utile dans les scripts de bash (et puisqu'il fait partie des coreutils vous l'avez probablement sur un système Linux).

2voto

ajivani Points 170

Pour ce faire, vous pouvez lancer top puis appuyez sur c sur votre clavier pour basculer l'affichage du chemin complet.

0voto

pvc Points 339

Si ces processus sont exécutés avec une ligne de commande différente (par exemple en utilisant le chemin complet), vous pouvez appuyer sur c pour afficher/masquer la ligne de commande complète avec laquelle le processus a été exécuté.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X