سؤال

لدي PID من عملية قيد التشغيل في FreeBSD. كيف يمكنني الحصول على الدليل الحالي لها؟

هل كانت مفيدة؟

المحلول

يمكنك الحصول على عدد INODE من دليل العمل الحالي مع

fstat -p $PID

يبدو أن LSOF ستمنحك شكلا مقروءا بشريا من دليل العمل الحالي، لكن ليس لدينا ذلك مثبتا على أي من أجهزة FreeBSD المحلية، لذلك لا يمكنني التحقق من ذلك.

نصائح أخرى

يمكن Fstat العثور على رقم INODE وأنظمة الملفات، والعثور على العثور على الدليل الصحيح.

جرب هذا:

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

عند تشغيل غير جذور، فمن المحتمل أن يخرج العثور على بعض رسائل "إذن" التي يمكن تجنبها عن طريق إدخال close(STDERR);أمام ال $F[3] (بعد أول اقتباس واحد).

في الإصدارات الأخيرة من FreeBSD، يمكنك استخدامها procstat -f $PID, ، مما يدل على اسم المسار إذا كان لا يزال في ذاكرة التخزين المؤقت باسم kernel.

/ proc / $ pid / cwd يحتوي على symlink إلى البرامج الدليل الحالي للعمل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top