Si je vois un processus s'exécuter à l'aide de ps, comment puis-je trouver l'exécutable?


11

Si je peux voir un processus s'exécuter à l'aide de ps -e, comment puis-je trouver le fichier qui l'a lancé?


2
De quel OS s'agit-il? Linux, BSD, Solaris ...
Patrick

linux ... mais les solutions cross-unix sont les bienvenues.
interstar

Réponses:


15

Sous Linux: si vous connaissez le PID, vous pouvez attraper le fichier cmdline pour ce fichier. Par exemple:

cat /proc/PID/cmdline

Cela échouera probablement si le binaire a été déplacé après le démarrage du programme.

Et bien sûr:

lsof -n | grep PID | grep ' txt '

et:

ls -la /proc/PID/exe

qui est un lien symbolique vers l'exécutable.


1
Notez qu'il /proc/PID/cmdlinen'a pas de caractère de nouvelle ligne, donc vous voudrez probablement faire quelque chose comme cat /proc/PID/cmdline ; echo ''.
Keith Thompson

En fait, il y a des caractères NUL séparant les arguments, donc vous voudrez peut-être quelque chose d'encore plus élaborétr '\0' ' ' < /proc/PID/cmdline ; echo ''
Keith Thompson

2

Copiez l'ID de processus à partir de la ps -ecommande, puis exécutez ce qui suit:

ps x | grep <process-id>

Cela n'échouera-t-il pas si une application modifie argv [0]? iirc sendmail fait cela.
Folkert van Heusden

Oui, c'est une probabilité. Néanmoins, cela est pratique presque à chaque fois.
Aditya Patawari

0

Aucune des méthodes ( ls, lsofou cat) des autres réponses ne fonctionne pour moi. Si je fais:

$ nano test.txt

Ceci est mon gagnant ,:

$ pgrep -f -l test
3074 nano test.txt

Ou, afin d'obtenir uniquement le PID pour l'utiliser dans la programmation:

$ pgrep -f test
3074

Testé sur Kali Linux v1.0.6 (basé sur Debian).
Comparé à un simple ls, je dois admettre que ce n'est pas une solution aussi portable, mais au moins ça marche.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.