Si j'ai plusieurs copies de la même application sur le disque et qu'une seule est en cours d'exécution, comme je peux le voir ps
, comment puis-je connaître le chemin absolu pour la distinguer des autres?
93
% sudo ls -l /proc/PID/exe
par exemple:
% ps -auxwe | grep 24466 racine 24466 0.0 0.0 1476 280? S 2009 0:00 supervise sshd % sudo ls -l / proc / 24466 / exe lrwxrwxrwx 1 racine racine 0 février 1 18h05 / proc / 24466 / exe -> /package/admin/daemontools-0.76/command/supervise
ls
commande.ls: cannot read symbolic link /proc/28783/exe: Permission denied
- il ne s'agit pas d'exécuter lals
commande, mais d'accéder aux informations de processus d'un processus qui ne vous appartient pas. Sur ma machine, environ 97% de tous les processus répertoriés dans / proc sont des processus racine, les autres étant répartis sur 11 utilisateurs différents.Utilisation:
Cela vous donne le répertoire de travail actuel du pid, pas son chemin absolu.
Habituellement, la
which
commande vous dira lequel est appelé à partir du shell:la source
$pid
?" Le message édité ne répond toujours pas à la question.which
dit simplement "Si la commande est sur le chemin, alors qu'est-ce que c'est?"pwdx
me renvoie le chemin absolu du programme exécutable du processus dépendant de pid sur redhat x64 6.3.Une façon est ps -ef
la source
La source:
https://serverfault.com/questions/62322/getting-full-path-of-executables-in-ps-auxwww-output
la source
La réponse rapide est d'utiliser
ps
avec les options ou les/proc
informations du système de fichiers. Cela fonctionnera généralement , mais n'est pas garanti. En général, il n'y a pas de réponse définitive et garantie. Par exemple, que se passe-t-il si le fichier en cours d'exécution est supprimé pendant l'exécution, de sorte qu'il n'y ait pas de chemin d'accès au fichier?Voir la FAQ Unix pour un peu plus de détails, en particulier les questions 4.3 et 4.4.
la source
Pourquoi tout le monde s'attend-il à ce que vous connaissiez le PID? Voici le moyen humain-amical:
la source
ps
», elle affichera donc probablement le PIDlsof est une option. Vous pouvez essayer quelque chose comme ci-dessous:
lsof -p PROCESS_ID
Ceci listera tous les fichiers ouverts par le processus, y compris l'emplacement réel de l'exécutable. Il est ensuite possible d’ajouter un peu plus de awk, cut, grep, etc. pour trouver les informations que vous recherchez.
A titre d'exemple, j'ai exécuté les commandes suivantes pour identifier l'origine de mon processus 'java':
lsof -p 12345 | awk '{print $ NF}' | grep 'java $'
la source
Vous pourriez utiliser
ou
pour obtenir le chemin absolu. Le PID est le processus.
la source