J'ai le pid d'un processus en cours dans freebsd. Comment obtenir son répertoire actuel?freebsd: dir actuel du processus en cours d'exécution par l'ID de processus
Répondre
Vous pouvez obtenir le numéro d'inode du répertoire de travail courant avec
fstat -p $PID
Il semble que lsof vous donnera une forme lisible par l'homme du répertoire de travail en cours, mais nous n'avons pas que installé sur une des machines FreeBSD locales, donc je ne peux pas vérifier cela.
/proc/$ PID/cwd contient un lien symbolique vers le répertoire de travail actuel des programmes.
fstat peut trouver le numéro d'inode et le système de fichiers, et trouver peut trouver le bon répertoire.
Essayez ceci:
fstat -p $$|perl -ane '$F[3] eq "wd" && system("find",$F[4],"-xdev","-inum",$F[5],"-print");'
Lorsqu'il est exécuté comme non-root, trouver sera probablement sortie tout à fait quelques « Permission denied » des messages qui peuvent être évités en insérant close(STDERR);
devant la $F[3]
(après la première simple citation).
hax ............ – Aki
Dans les versions plus récentes de FreeBSD, vous pouvez utiliser procstat -f $PID
, qui affiche le chemin s'il se trouve encore dans le cache du nom du noyau.
- 1. Charge CPU du processus en cours
- 2. processus en cours d'exécution, étape par étape
- 3. Qt: Tuer le processus actuel?
- 4. Utilisation de la mémoire du processus en cours dans C
- 5. Obtenir le processus en cours donné handle de processus
- 6. Modification de l'environnement de processus actuel LD_LIBRARY_PATH
- 7. Obtenez l'utilisation du processeur en cours de processus en C
- 8. Changer la priorité du processus actuel en C
- 9. Utilisation du processeur par processus en Python
- 10. Débogage d'un processus python en cours d'exécution
- 11. Liste des processus en cours d'exécution
- 12. C#: trouver le processus en cours
- 13. Obtenir le répertoire de travail actuel du processus avec un pid par programme sous OS X
- 14. Comment trouver le chemin depuis lequel le processus/exécutable actuel est en cours d'exécution?
- 15. Impossible de masquer un processus en cours dans le terminal
- 16. Surveillance du processus
- 17. Modifier le nom du processus en C#?
- 18. Intercepter stdout d'un sous-processus en cours d'exécution
- 19. Vérification de l'état du processus
- 20. Attribuer des capacités à un processus en cours
- 21. Vider par programme un grand fichier texte en cours d'utilisation par un autre processus
- 22. Injecter un hôte CLR dans un processus en cours - possible?
- 23. Processus en cours d'exécution qui retournera un fichier
- 24. Comment puis-je déterminer le nom du processus ciblé en cours et la version en C#
- 25. Elevating privilege de processus par programme?
- 26. Comment obtenir l'identifiant de processus du processus appelant dans erlang?
- 27. fonction pour obtenir le descripteur de fichier terminal du processus en cours UNIX
- 28. Interagir avec un processus Flash en cours d'exécution?
- 29. Obtenir une instance d'une classe dans un processus en cours
- 30. Appel d'une fonction à partir d'un processus en cours
Il convient de noter que le système de fichiers '/ proc' n'est pas nécessairement disponible dans toutes les installations de FreeBSD. –
Cela fonctionne pour Linux, mais ne semble pas faire partie de/proc dans FreeBSD. Voir la page de manuel procfs à: http://www.freebsd.org/cgi/man.cgi?query=procfs –