freebsd: текущий каталог запущенного процесса по идентификатору процесса

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

4 ответа

Решение

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

fstat -p $PID

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

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] (после первой одинарной кавычки).

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

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

Другие вопросы по тегам