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.
whichest cool, mais il ne renvoie que les programmes de votre $ PATH. Si je cours RandomProgramIDownloadedToErisKnowsWhere.bin, cela ne sera pas très utile.
djeikyb
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:
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.
Réponses:
Le
/proc
moyen serait d'inspecter leexe
lien dans le répertoire correspondant au pid.Prenons un exemple avec
update-notifier
:Trouvez le pid, qui est 15421 dans cet exemple:
Recherchez le lien symbolique:
la source
C'est peut
which
- être ce que vous cherchez. Par exemple, sur mon systèmerésultats
Voir aussi Rechercher le chemin de l'application en cours d'exécution sur Solaris, Ubuntu, Suse ou Redhat Linux .
la source
which
est cool, mais il ne renvoie que les programmes de votre $ PATH. Si je coursRandomProgramIDownloadedToErisKnowsWhere.bin
, cela ne sera pas très utile.Si vous disposez d'un ID de processus, vous pouvez utiliser:
(remplacer
$pid
par l'ID de processus d'un processus)Si le processus ne vous appartient pas, vous devrez le mettre
sudo
en avant.Un exemple pour déterminer l'emplacement de la commande
firefox
:La sortie de
ps ax -o pid,cmd | grep firefox
:28179
est l'ID du processus, vous devez donc exécuter:qui génère:
la source
/proc/$pid/exe
, si le binaire est accidentellement supprimé, vous pouvez le restaurer avec:dd if=/proc/$pid/exe of=restored-binary
Appuyez sur Ctrl+ Alt+ Tpour accéder à un terminal et saisissez:
puis vérifiez la sortie
Cela répertoriera tous les fichiers auxquels votre processus est associé ...
la source
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:
Et pendant qu'il s'exécute, appuyez sur le clavier
C
et vous obtiendrez une commande des processus qui ont été exécutés.la source