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.
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.
Réponses:
Le /proc
moyen serait d'inspecter le exe
lien 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'
C'est peut which
- être ce que vous cherchez. Par exemple, sur mon système
which firefox
résultats
/usr/bin/firefox
Voir aussi Rechercher le chemin de l'application en cours d'exécution sur Solaris, Ubuntu, Suse ou Redhat Linux .
which
est cool, mais il ne renvoie que les programmes de votre $ PATH. Si je cours RandomProgramIDownloadedToErisKnowsWhere.bin
, cela ne sera pas très utile.
Si vous disposez d'un ID de processus, vous pouvez utiliser:
readlink -f /proc/$pid/exe
(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
:
22831 grep --color=auto firefox
28179 /usr/lib/firefox-4.0.1/firefox-bin
28179
est l'ID du processus, vous devez donc exécuter:
readlink -f /proc/28179/exe
qui génère:
/usr/bin/firefox
/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:
ls -al /proc/{pid}/fd
puis vérifiez la sortie
Cela répertoriera tous les fichiers auxquels votre processus est associé ...
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 C
et vous obtiendrez une commande des processus qui ont été exécutés.