Comment déterminer le chemin vers un binaire d'un processus?


30

Existe-t-il un moyen de découvrir l'emplacement du répertoire / disque à partir duquel un processus a été démarré? Je connais la monture / proc mais pas vraiment où regarder à l'intérieur.


1
Voulez-vous dire l'emplacement du binaire ou le répertoire à partir duquel un processus a commencé?
Lekensteyn

Désolé pour l'ambiguïté, je veux dire le binaire
SuperJumbo

Réponses:


37

Le /procmoyen serait d'inspecter le exelien dans le répertoire correspondant au pid.

Prenons un exemple avec update-notifier:

Trouvez le pid, qui est 15421 dans cet exemple:

egil@gud:~$ ps x | grep update-notifier
 2405 pts/4    S+     0:00 grep update-notifier
15421 ?        Sl     0:00 update-notifier

Recherchez le lien symbolique:

egil@gud:~$ file /proc/15421/exe
/proc/15421/exe: symbolic link to `/usr/bin/update-notifier'

Oh ouais, j'étais presque là. Légende, merci.
SuperJumbo


6

Si vous disposez d'un ID de processus, vous pouvez utiliser:

readlink -f /proc/$pid/exe

(remplacer $pidpar l'ID de processus d'un processus)

Si le processus ne vous appartient pas, vous devrez le mettre sudoen avant.

Un exemple pour déterminer l'emplacement de la commande firefox:

  1. La sortie de ps ax -o pid,cmd | grep firefox:

    22831 grep --color=auto firefox
    28179 /usr/lib/firefox-4.0.1/firefox-bin
    
  2. 28179 est l'ID du processus, vous devez donc exécuter:

    readlink -f /proc/28179/exe
    

    qui génère:

    /usr/bin/firefox
    

2
Vous pouvez faire des choses sympas avec /proc/$pid/exe, si le binaire est accidentellement supprimé, vous pouvez le restaurer avec:dd if=/proc/$pid/exe of=restored-binary
Lekensteyn

1

Appuyez sur Ctrl+ Alt+ Tpour accéder à un terminal et saisissez:

ls -al /proc/{pid}/fd  

puis vérifiez la sortie

Cela répertoriera tous les fichiers auxquels votre processus est associé ...


Pourriez-vous s'il vous plaît revoir mes modifications et également revoir l' aide à la modification pour améliorer la lisibilité de vos réponses à l'avenir ... ;-)
Fabby

0

Toutes les commandes des autres réponses sont bonnes, mais vous pourriez faire encore plus - voir comment certains processus ont été réellement exécutés avant d'arriver à la liste des processus.

Run in terminal:

top

Et pendant qu'il s'exécute, appuyez sur le clavier Cet vous obtiendrez une commande des processus qui ont été exécutés.

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.