freebsd: текущий каталог запущенного процесса по идентификатору процесса - PullRequest
3 голосов
/ 21 июля 2009

У меня pid запущенного процесса в freebsd. Как мне получить его текущий каталог?

Ответы [ 4 ]

3 голосов
/ 21 июля 2009

Вы можете получить номер индекса текущего рабочего каталога с помощью

fstat -p $PID

Похоже, что lsof даст вам удобочитаемую форму текущего рабочего каталога, но мы не установили его ни на одной из локальных машин FreeBSD, поэтому я не могу это проверить.

3 голосов
/ 10 ноября 2009

fstat может найти номер инода и файловую систему, а команда find может найти правильный каталог.

Попробуйте это:

fstat -p $$|perl -ane '$F[3] eq "wd" && system("find",$F[4],"-xdev","-inum",$F[5],"-print");'

При запуске без полномочий root команда find, вероятно, выдаст довольно много сообщений "Permission denied", которых можно избежать, вставив close(STDERR); перед $F[3] (после первой одинарной кавычки).

1 голос
/ 02 августа 2010

В более свежих версиях FreeBSD вы можете использовать procstat -f $PID, который показывает путь, если он все еще находится в кэше имен ядра.

0 голосов
/ 21 июля 2009

/ proc / $ PID / cwd содержит символическую ссылку на текущий рабочий каталог программ.

...