2009-07-21 26 views

Répondre

3

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.

-1

/proc/$ PID/cwd contient un lien symbolique vers le répertoire de travail actuel des programmes.

+1

Il convient de noter que le système de fichiers '/ proc' n'est pas nécessairement disponible dans toutes les installations de FreeBSD. –

+0

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 –

3

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

+0

hax ............ – Aki

1

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.