Réponses:
Une façon d'obtenir l'emplacement binaire du processus est d'utiliser lsof
et grep
pour le premier txt
segment. Par exemple, dans le shell pour voir quel est le binaire du shell, utilisez le PID du shell à la place de $$
.
$ lsof -p $$ | grep txt
bash 78228 blair txt REG 14,2 1244928 6568359 /bin/bash
bash 78228 blair txt REG 14,2 1059792 23699809 /usr/lib/dyld
bash 78228 blair txt REG 14,2 136368128 81751398 /private/var/db/dyld/dyld_shared_cache_i386
Vous pouvez voir que le shell utilise /bin/bash
.
Cette technique fonctionne si le processus a été lancé à l'aide d'un chemin absolu ou relatif. Par exemple, entrer dans un shell et exécuter
$ sleep 1234567
et l'utilisation ps
dans un autre shell montre seulement comment il a été lancé:
$ ps auxww|grep '[s]leep'
blair 79462 0.0 0.0 600908 744 s011 S+ 11:17PM 0:00.00 sleep 1234567
en utilisant lsof
montre quel binaire il a exécuté:
$ lsof -p 79462 | awk '$4 == "txt" { print $9 }'
/opt/local-development/bin/gsleep
J'ai MacPorts coreutils + with_default_names installé, ce qui explique que j'ai ramassé gsleep
et non /bin/sleep
.
Exemple: vous recherchez le nom de la commande de processus associé pour PID 45109
...
> % ps awx | awk '$1 == 45109 { print $5 }'
> /Applications/Safari.app/Contents/MacOS/Safari
ps -ef avec grep fonctionne pour moi. Pour un nom de fichier spécifique, dirigez simplement grep ainsi:
MacBook:~ Me$ ps -ef | grep Safari | grep -v grep
501 15733 301 0 0:25.76 ?? 1:58.24 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_4977855
(Ce dernier 'grep -v grep' vous empêche simplement d'obtenir votre propre commande grep dans la sortie)
; exit
après l'instruction print afin que seule la premièretxt
entrée soit imprimée même s'il y en a plusieurs comme dans l'exemple bash.