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.
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 –