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 содержит символическую ссылку на текущий рабочий каталог программы.