- ملخص
- الوصف
- الخيارات
- AFS
- الأمان
- الإخراج
- الأقفال
- الإخراج للبرامج الأخرى
- الحظر والمهلات الزمنية
- تجنب حالات تعليق النواة
- أرقام الأجهزة البديلة
- ذاكرة التخزين المؤقت لاسم النواة
- ملف ذاكرة التخزين المؤقت للأجهزة
- أذونات LSOF التي تؤثر على الوصول إلى ملف ذاكرة التخزين المؤقت للأجهزة
- مسار ملف ذاكرة تخزين الأجهزة من الخيار -D
- مسار ذاكرة التخزين المؤقت للأجهزة من متغير بيئة
- مسار ذاكرة التخزين المؤقت للأجهزة على مستوى النظام
- مسار ذاكرة التخزين المؤقت للأجهزة الشخصية (افتراضي)
- مسار ذاكرة التخزين المؤقت للجهاز الشخصي المعدّل
- تشخيص الأخطاء
- أمثلة
- الأخطاء
- البيئة
- الأسئلة الشائعة
- الملفات
- المؤلفون
- التوزيع
- راجع أيضًا
lsof - عرض الملفات المفتوحة
ملخص
lsof [ -?abChHlnNOPQRtUvVX ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ +|-D D ] [ +|-e s ] [ +|-E ]
[ +|-f [cfgGn] ] [ -F [f] ] [ -g [s] ] [ -i [i] ] [ -k k ] [ -K k ] [ +|-L [l] ] [ +|-m m ] [
+|-M ] [ -o [o] ] [ -p s ] [ +|-r [t[m<fmt>]] ] [ -s [p:s] ] [ -S [t] ] [ -T [t] ] [ -u s ] [
+|-w ] [ -x [fl] ] [ -z [z] ] [ -Z [Z] ] [ -- ] [names]
الوصف
يعرض lsof، الإصدار 4.99.4، معلومات الملف حول الملفات المفتوحة بواسطة العمليات في الإخراج القياسي الخاص به لأنظمة UNIX التالية:
Apple Darwin 9، Mac OS X 10، macOS 11 والإصدارات الأحدث
FreeBSD 8.2 والإصدارات الأحدث
Linux 2.1.72 والإصدارات الأحدث
NetBSD 1.2 والإصدارات الأحدث
OpenBSD 7.2 والإصدارات الأحدث
Solaris 9 و 10 و 11 والإصدارات الأحدث
OpenIndiana 5.11 والإصدارات الأحدث
(انظر قسم "التوزيع" في صفحة الدليل هذه للحصول على معلومات حول كيفية الحصول على أحدث إصدار من lsof.)
يمكن أن يكون الملف المفتوح ملفًا عاديًا أو دليلًا أو ملفًا خاصًا بالكتل أو ملفًا خاصًا للأحرف أو مرجع نصي قيد التنفيذ أو مكتبة أو دفق أو ملف شبكة (مقبس الإنترنت أو ملف NFS أو مقبس مجال UNIX). يمكن تحديد ملف معين أو جميع الملفات في نظام ملفات عن طريق المسار.
بدلاً من عرض بتنسيق، سينتج lsof إخراجًا يمكن تحليله بواسطة برامج أخرى. راجع خيار -F ووصفه، وقسم "الإخراج للبرامج الأخرى" لمزيد من المعلومات.
بالإضافة إلى إنتاج قائمة إخراج واحدة، سيقوم lsof بالتشغيل في وضع التكرار. في وضع التكرار، سينتج الإخراج، ويتوقف مؤقتًا، ثم يكرر عملية الإخراج حتى يتم إيقافه بإشارة مقاطعة أو إنهاء. راجع وصف الخيار +|-r [t[m<fmt>]] لمزيد من المعلومات.
الخيارات
في حالة عدم وجود أي خيارات، يعرض lsof جميع الملفات المفتوحة التي تنتمي إلى جميع العمليات النشطة.
إذا تم تحديد أي خيار لطلب قائمة، فيجب طلب طلبات القائمة الأخرى على وجه التحديد، على سبيل المثال، إذا تم تحديد -U لإدراج ملفات مقبس مجال UNIX، فلن يتم إدراج ملفات NFS ما لم يتم تحديد -N أيضًا؛ أو إذا تم تحديد قائمة مستخدم بالخيار -u، فلن يتم إدراج ملفات مقبس مجال UNIX التي تنتمي إلى مستخدمين ليسوا في القائمة، ما لم يتم تحديد الخيار -U أيضًا.
عادةً، تكون خيارات القائمة المحددة بشكل خاص عبارة عن OR - أي أن تحديد الخيار -i بدون عنوان والخيار -ufoo ينتج عنه قائمة بجميع ملفات الشبكة أو الملفات التي تنتمي إلى العمليات التي يمتلكها المستخدم "foo". الاستثناءات هي:
1 اسم المستخدم أو معرف المستخدم (UID) المنفي، المحدد بالخيار -u؛
2 معرف العملية (PID) المنفي، المحدد بالخيار -p؛
3 معرف مجموعة العمليات (PGID) المنفي، المحدد بالخيار -g؛
4 الأمر `^` (المنفي)، المحدد باستخدام الخيار `-c`؛
5 أسماء حالة بروتوكول TCP أو UDP المنفية (`^`)، المحددة باستخدام الخيار `-s [p:s]`.
نظرًا لتمثيلها للاستثناءات، يتم تطبيقها دون استخدام OR أو AND وتأخذ مفعولها قبل تطبيق أي معايير تحديد أخرى.
يمكن استخدام الخيار `-a` لدمج عمليات التحديد باستخدام AND. على سبيل المثال، تحديد `-a` و `-U` و `-ufoo` ينتج عنه قائمة بملفات المقبس UNIX فقط التي تنتمي إلى العمليات المملوكة للمستخدم "foo".
تحذير: يتسبب الخيار `-a` في دمج جميع خيارات تحديد القائمة باستخدام AND؛ لا يمكن استخدامه
لإحداث دمج لأزواج محددة من خيارات التحديد عن طريق وضعه بينها، على الرغم من أن وضعه هناك مقبول. أينما تم وضع `-a`، فإنه يتسبب في دمج جميع خيارات التحديد.
يتم تجميع العناصر من نفس مجموعة التحديد - أسماء الأوامر، واصفات الملفات، وعناوين الشبكة، ومعرفات العمليات، ومعرفات المستخدمين، وأسماء المناطق، والسياقات الأمنية - في مجموعة واحدة باستخدام OR وتطبيقها قبل أن تشارك النتيجة في عملية دمج باستخدام AND. وهكذا، على سبيل المثال، تحديد - و - و -a و -ufff,ggg سيحدد قائمة بالملفات التي تنتمي إما إلى تسجيل الدخول "fff" أو "ggg" ويكون لديها اتصالات شبكة إما بالمضيف aaa.bbb أو ccc.ddd.
يمكن تجميع الخيارات معًا بعد بادئة واحدة - على سبيل المثال، يمكن ذكر مجموعة الخيارات "-a -b -C" على أنها -abC. ومع ذلك، نظرًا لأن القيم اختيارية بعد +|-f و -F و -g و -i و +|-L و -o و +|-r و -s و -S و -T و -x و -z، عندما لا يكون لديك قيم لها، كن حذرًا من أن الحرف التالي ليس غامضًا. على سبيل المثال، قد يمثل -Fn الخيارين -F و -n، أو قد يمثل حرف معرف الحقل n الذي يلي الخيار -F. عندما يكون هناك غموض محتمل، ابدأ خيارًا جديدًا بحرف '-' - على سبيل المثال، '-F -n'. إذا كان الخيار التالي هو اسم ملف، فاتبع الخيار الذي قد يكون غامضًا بـ -- - على سبيل المثال، '-F -- name'.
يمكن تطبيق البادئة '+' أو '-' على مجموعة من الخيارات. يمكن تجميع الخيارات التي لا تأخذ معاني منفصلة لكل بادئة - على سبيل المثال، -i - تحت أي من البادئتين. وهكذا، على سبيل المثال، يمكن ذكر '+M -i' على أنها '+Mi' وتعني المجموعة نفس الخيارات المنفصلة.
كن حذرًا بشأن تجميع البادئات عندما يأخذ خيار واحد أو أكثر في المجموعة معاني منفصلة تحت بادئات مختلفة - على سبيل المثال، +|-M؛ '-iM' ليست هي نفس الطلب مثل '-i +M'. عند الشك، استخدم خيارات منفصلة مع البادئات المناسبة.
`-? -h` هذان الخياران المتكافئان يحددان قائمة إخراج التعليمات (المساعدة). يعرض `lsof` شكلًا مختصرًا من هذا الإخراج عندما يكتشف خطأً في الخيارات المقدمة، بعد أن يعرض رسائل توضح كل خطأ. (قم بإلغاء `?` كما يتطلب ذلك برنامج shell الخاص بك).
`-a` يتسبب في دمج خيارات تحديد القائمة باستخدام AND، كما هو موضح أعلاه.
`-A A` متاح على الأنظمة التي تم تكوينها لـ AFS والتي يتم فيها تنفيذ كود kernel الخاص بـ AFS عبر وحدات ديناميكية. يسمح هذا للمستخدم بتحديد `A` كملف اسم بديل حيث يمكن العثور على عناوين kernel للوحدات الديناميكية. راجع قسم الأسئلة الشائعة في `lsof` (يعطي قسم الأسئلة الشائعة موقعه) للحصول على مزيد من المعلومات حول الوحدات الديناميكية ورموزها وكيف تؤثر على `lsof`.
-b: يتسبب هذا الخيار في أن يتجنب lsof الدوال الموجودة في النواة والتي قد تحظر التنفيذ، مثل `lstat(2)`، و `[readlink]({filename}../../readlink)(2)`، و `[stat]({filename}../../stat)(2)`.
انظر إلى قسمي "حظر العمليات والمهلات الزمنية" و "تجنب حظر العمليات في النواة" للحصول على معلومات حول كيفية استخدام هذا الخيار.
-c c: يحدد هذا الخيار قائمة الملفات للعمليات التي تنفذ الأمر الذي يبدأ بأحرف `c`. يمكن تحديد أوامر متعددة باستخدام خيارات `-c` متعددة. يتم دمجها في مجموعة واحدة باستخدام عامل "أو" (OR) قبل المشاركة في تحديد الخيارات باستخدام عامل "و" (AND).
إذا بدأ `c` بالحرف `^`، فإن الأحرف التالية تحدد اسم الأمر الذي يجب تجاهله (استبعاده).
إذا بدأ `c` وانتهى بشرطة مائلة (`/`)، فسيتم تفسير الأحرف الموجودة بين الشرطتين المائلتين كتعبير عادي (regular expression). يجب اقتباس الأحرف الوهمية (meta-characters) في التعبير العادي لمنع تفسيرها بواسطة shell. يمكن أن يتبع الشرطة المائلة الختامية هذه المعدِّلات:
b: يكون التعبير العادي تعبيرًا أساسيًا.
i: تجاهل حالة الأحرف.
x: يكون التعبير العادي تعبيرًا موسعًا (افتراضي).
انظر إلى قسم الأسئلة الشائعة في lsof (يحدد هذا القسم موقعه) للحصول على مزيد من المعلومات حول التعبيرات العادية الأساسية والموسعة.
يتم اختبار تحديد الأمر البسيط أولاً. إذا فشل هذا الاختبار، يتم تطبيق التعبير العادي للأمر. إذا نجح اختبار تحديد الأمر البسيط، فلن يتم إجراء اختبار التعبير العادي للأمر. قد يؤدي هذا إلى ظهور رسائل مثل "لم يتم العثور على أمر للتعبير العادي" عندما يتم تحديد خيار `-V` في lsof.
+c w: يحدد الحد الأقصى لعدد الأحرف الأولية من اسم الأمر، الذي يوفره نظام التشغيل، المرتبط بالعملية ليتم طباعته في عمود "الأمر". (القيمة الافتراضية في lsof هي تسعة).
لاحظ أن العديد من أنظمة التشغيل لا توفر جميع أحرف اسم الأمر لـ lsof في الملفات والهياكل التي يحصل منها lsof على اسم الأمر. غالبًا ما تحد هذه الأنظمة من عدد الأحرف التي يتم توفيرها في هذه المصادر. على سبيل المثال، يحد كل من Linux 2.4.27 و Solaris 9 من طول اسم الأمر إلى 16 حرفًا.
إذا كانت `w` تساوي صفرًا (`0`)، فسيتم طباعة جميع أحرف الأمر التي يوفرها نظام التشغيل لـ lsof.
إذا كانت `w` أقل من طول عنوان العمود، "COMMAND"، فسيتم رفعها إلى هذا الطول.
-C: يعطل هذا الخيار الإبلاغ عن أي مكونات مسار من ذاكرة التخزين المؤقت للأسماء في النواة. انظر إلى قسم "ذاكرة التخزين المؤقت للأسماء في النواة" للحصول على مزيد من المعلومات.
+d s: يتسبب هذا الخيار في أن يبحث lsof عن جميع مثيلات الدليل `s` والملفات والدلائل التي يحتوي عليها في المستوى الأعلى. لا ينزل الخيار `+d` إلى شجرة الدليل، بدءًا من `s`.
يمكن استخدام الخيار `+D D` لطلب بحث كامل في شجرة الدليل، بدءًا من الدليل `D`.
عند معالجة الخيار +d، لا يتم تتبع الروابط الرمزية داخل s ما لم يتم تحديد الخيارين -x أو -x l أيضًا. كما لا يتم البحث عن الملفات المفتوحة في نقاط التحميل الخاصة بنظام الملفات في الدلائل الفرعية من s ما لم يتم تحديد الخيارين -x أو -x f أيضًا.
ملاحظة: يقتصر نطاق هذا الخيار على البحث عن الملفات التي يمتلك المستخدم الحالي إذنًا لفحصها باستخدام الدالة `[stat]({filename}../../stat)(2)` في النظام.
-d s يحدد قائمة واصفات الملفات (FDs) التي سيتم استبعادها أو تضمينها في قائمة الإخراج. يتم تحديد واصفات الملفات في المجموعة المفصولة بفواصل `s` - على سبيل المثال، `cwd,1,3`، `^6,^2`. (يجب ألا يكون هناك مسافات في المجموعة).
تعتبر القائمة قائمة استبعاد إذا بدأت جميع إدخالاتها بالرمز `^`. وتعتبر قائمة تضمين إذا لم يبدأ أي إدخال بالرمز `^`. ولا يُسمح باستخدام قوائم مختلطة.
يمكن أن تكون هناك نطاقات لأرقام واصفات الملفات في المجموعة، طالما أن كلا العضوين ليسا فارغين، وكلاهما أرقام، والعضو الأخير أكبر من العضو الأول - على سبيل المثال، `0-7` أو `3-10`. يمكن تحديد النطاقات للاستبعاد إذا كانت تحتوي على البادئة `^` - على سبيل المثال، `^0-7` يستبعد جميع واصفات الملفات من 0 إلى 7.
يتم ربط أرقام واصفات الملفات المتعددة في مجموعة واحدة باستخدام عامل التشغيل `OR` قبل المشاركة في تحديد الخيارات باستخدام عامل التشغيل `AND`.
عندما تكون هناك أعضاء استبعاد وتضمين في المجموعة، يقوم `lsof` بالإبلاغ عنها كأخطاء ويخرج برمز إرجاع غير صفري.
راجع وصف قيم واصف الملفات (FD) في قسم OUTPUT للحصول على مزيد من المعلومات حول أسماء واصفات الملفات.
`fd` هو اسم مستعار لواصف ملف يحدد النطاق الكامل لأرقام واصفات الملفات المحتملة. لا يظهر `fd` في عمود FD للإخراج.
+D D يتسبب في قيام `lsof` بالبحث عن جميع الحالات المفتوحة للدليل `D` وجميع الملفات والدلائل التي يحتوي عليها بعمق كامل.
عند معالجة الخيار +D، لا يتم تتبع الروابط الرمزية داخل `D` ما لم يتم تحديد الخيارين `-x` أو `-x l` أيضًا. كما لا يتم البحث عن الملفات المفتوحة في نقاط التحميل الخاصة بنظام الملفات في الدلائل الفرعية من `D` ما لم يتم تحديد الخيارين `-x` أو `-x f` أيضًا.
ملاحظة: يقتصر نطاق هذا الخيار على البحث عن الملفات التي يمتلك المستخدم الحالي إذنًا لفحصها باستخدام الدالة `[stat]({filename}../../stat)(2)` في النظام.
ملاحظة إضافية: قد يقوم `lsof` بمعالجة هذا الخيار ببطء ويتطلب قدرًا كبيرًا من الذاكرة الديناميكية للقيام بذلك. وذلك لأنه يجب عليه النزول إلى شجرة الدليل بأكملها، بدءًا من `D`، واستدعاء الدالة `[stat]({filename}../../stat)(2)` لكل ملف ودليل، وإنشاء قائمة بجميع الملفات التي يجدها، والبحث في تلك القائمة عن تطابق مع كل ملف مفتوح. عندما يكون الدليل `D` كبيرًا، يمكن أن تستغرق هذه الخطوات وقتًا طويلاً، لذا استخدم هذا الخيار بحذر.
-D D يوجه استخدام `lsof` لملف ذاكرة التخزين المؤقت للأجهزة. قد يكون استخدام هذا الخيار مقيدًا في بعض الأحيان. راجع قسم ملف ذاكرة التخزين المؤقت للأجهزة والأقسام التي تليه للحصول على مزيد من المعلومات حول هذا الخيار.
-D يجب أن يتبعه حرف دالة؛ قد يتبعه حرف الدالة اختياريًا اسم مسار. يتعرف lsof على أحرف الدوال التالية:
؟ - عرض مسارات ملف ذاكرة التخزين المؤقت للجهاز
ب - إنشاء ملف ذاكرة التخزين المؤقت للجهاز
ت - تجاهل ملف ذاكرة التخزين المؤقت للجهاز
ر - قراءة ملف ذاكرة التخزين المؤقت للجهاز
و - قراءة وتحديث ملف ذاكرة التخزين المؤقت للجهاز
تُقيّد الدوال ب، و، وت، المصحوبة باسم مسار، في بعض الأحيان. عندما تُقيّد هذه الدوال، فلن تظهر في وصف خيار -D الذي يصاحب ناتج الخيارين -h أو -؟. انظر قسم "ملف ذاكرة التخزين المؤقت للجهاز" والأقسام التي تليه للحصول على مزيد من المعلومات حول هذه الدوال ومتى يتم تقييدها.
تعرض الدالة "?" مسارات القراءة والكتابة التي يمكن أن يستخدمها lsof لملف ذاكرة التخزين المؤقت للجهاز، وأسماء أي متغيرات بيئة سيفحصها lsof عند تكوين مسار ملف ذاكرة التخزين المؤقت للجهاز، وتنسيق مسار ملف ذاكرة التخزين المؤقت الشخصي للجهاز. (قم بإلغاء حرف "?" كما يتطلب ذلك الصدفة الخاصة بك).
عند توفرها، يمكن أن تتبع الدوال ب، و، وت مسار ملف ذاكرة التخزين المؤقت للجهاز. الإعداد الافتراضي هو .lsof_hostname في الدليل الرئيسي لمعرف المستخدم الحقيقي الذي يقوم بتشغيل lsof، ولكن يمكن أن يكون هذا قد تغير عند تكوين وتجميع lsof. (يعرض ناتج الخيارين -h و -؟ البادئة الافتراضية الحالية - على سبيل المثال، ".lsof"). اللاحقة، hostname، هي المكون الأول من اسم المضيف الذي يتم إرجاعه بواسطة gethostname(2).
عند توفرها، توجه الدالة ب lsof لإنشاء ملف ذاكرة تخزين مؤقت جديد للجهاز في المسار الافتراضي أو المحدد.
توجه الدالة ت lsof لتجاهل ملف ذاكرة التخزين المؤقت للجهاز الافتراضي والحصول على معلومات حول الأجهزة عبر استدعاءات مباشرة للنواة.
توجه الدالة ر lsof لقراءة ذاكرة التخزين المؤقت للجهاز في المسار الافتراضي أو المحدد، ولكن تمنعه من إنشاء ملف ذاكرة تخزين مؤقت جديد عندما لا يكون موجودًا أو يكون الحالي غير منظم بشكل صحيح. الدالة ر، عند تحديدها بدون اسم مسار، تمنع lsof من تحديث ملف ذاكرة تخزين مؤقت غير صحيح أو قديم، أو إنشاء ملف جديد مكانه. الدالة ر متاحة دائمًا عند تحديدها بدون وسيطة اسم مسار؛ قد يتم تقييدها بأذونات عملية lsof.
عند توفرها، توجه الدالة و lsof لقراءة ملف ذاكرة التخزين المؤقت للجهاز في المسار الافتراضي أو المحدد، إن أمكن، وإعادة بنائه، إذا لزم الأمر. هذه هي دالة ملف ذاكرة التخزين المؤقت للجهاز الافتراضية عندما لا يتم تحديد خيار -D.
+|-e s يستثني نظام الملفات الذي يكون اسمه s من التعرض لاستدعاءات دالة النواة التي قد تحظر. يستثني الخيار +e استدعاءات دالة النواة [stat]({filename}../../stat)(2) و lstat(2) ومعظم [readlink]({filename}../../readlink)(2). يستثني الخيار -e فقط استدعاءات دالة النواة [stat]({filename}../../stat)(2) و lstat(2). يمكن تحديد أنظمة ملفات متعددة باستخدام مواصفات +|-e منفصلة ويمكن أن يكون لكل منها استثناء أو عدم استثناء استدعاءات [readlink]({filename}../../readlink)(2).
هذا الخيار مُنفَّذ حاليًا لنظام Linux فقط.
تنبيه: يمكن تطبيق هذا الخيار بسهولة على نظام ملفات آخر غير المقصود، لأنه يستخدم اسم المسار بدلاً من أرقام الأجهزة والمعرّفات (inode) الأكثر موثوقية.
(يتم الحصول على أرقام الأجهزة والمعرّفات (inode) من خلال استدعاء النواة stat(2) الذي قد يستغرق وقتًا، وبالتالي فهي غير متاحة، ولكن انظر إلى خيار +|-m m كطريقة بديلة محتملة لتوفير أرقام الأجهزة.) استخدم هذا الخيار بحذر وحدد اسم المسار لنظام الملفات الذي تريد استبعاده.
عند الإبلاغ عن الملفات المفتوحة على أنظمة الملفات المستبعدة، قد لا يكون من الممكن الحصول على جميع معلوماتها. لذلك، قد تكون بعض أعمدة المعلومات فارغة، وستسبق الأحرف "UNKN" القيم الموجودة في عمود TYPE، ويتم إضافة خيار الاستبعاد ذي الصلة بين قوسين في نهاية عمود NAME. (قد تكون بعض معلومات أرقام الأجهزة متاحة من خلال خيار +|-m m.)
+|-E +E يحدد أنه يجب عرض ملفات Linux pipe و Linux UNIX socket و Linux INET(6) socket المغلقة على المضيف المحلي، وملفات Linux pseudoterminal، وتنفيذ POSIX Message Queue في Linux، وملفات Linux eventfd بمعلومات نقطة النهاية، ويجب أيضًا عرض ملفات نقاط النهاية.
ملاحظة 1: تتوفر معلومات نقطة نهاية ملف UNIX socket فقط عندما تحتوي سطر "الميزات المُمكّنة" في مخرجات -v على uxsockept، وتتوفر معلومات نقطة نهاية pseudoterminal فقط عندما تحتوي سطر "الميزات المُمكّنة" على ptyept.
ملاحظة 2: تتوفر معلومات ملف POSIX Message Queue فقط عندما يتم تحميل نظام ملفات mqueue.
يتم عرض معلومات نقطة نهاية Pipe في عمود NAME بالصيغة "PID,cmd,FDmode"، حيث PID هو معرّف عملية نقطة النهاية؛ cmd هو أمر عملية نقطة النهاية؛ FD هو واصف ملف نقطة النهاية؛ و mode هو وضع الوصول إلى ملف نقطة النهاية.
يتم عرض معلومات نقطة نهاية Pseudoterminal في عمود NAME بالصيغة "->/dev/ptsmin PID,cmd,FDmode" أو "PID,cmd,FDmode". الصيغة الأولى مخصصة للجهاز الرئيسي؛ والثانية، للجهاز التابع. min هو رقم الجهاز الفرعي للجهاز التابع؛ و PID و cmd و FD و mode هي نفسها الموجودة في معلومات نقطة نهاية pipe. ملاحظة: تتوفر معلومات نقطة نهاية pseudoterminal فقط عندما تحتوي سطر "الميزات المُمكّنة" في مخرجات -v على ptyept. بالإضافة إلى ذلك، يعمل هذا الميزة على نواة Linux الإصدار 4.13.0 وما فوق.
يتم عرض معلومات ملف UNIX socket في عمود NAME بالصيغة "type=TYPE ->INO=INODE PID,cmd,FDmode"، حيث TYPE هو نوع المقبس؛ و INODE هو رقم معرّف (inode) المقبس المتصل؛ و PID و cmd و FD و mode هي نفسها الموجودة في معلومات نقطة نهاية pipe. ملاحظة: تتوفر معلومات ملف UNIX socket فقط عندما تحتوي سطر "الميزات المُمكّنة" في مخرجات -v على uxsockept.
يتم إدراج معلومات نقطة نهاية ملف مأخذ التوصيل INET في القيمة الموجودة في عمود NAME بالصيغة
`` -> PID,cmd,FDmode''، حيث PID و cmd و FD و mode هي نفسها المستخدمة في معلومات نقطة نهاية الأنبوب. تتوفر معلومات نقطة النهاية فقط إذا تم استخدام المأخذ للاتصال بين العمليات محليًا؛ حيث ترتبط كلتا نقطتي النهاية بنفس عنوان IPv4 أو IPv6 المحلي.
يتم عرض معلومات ملف قائمة انتظار الرسائل POSIX في عمود NAME بنفس الصيغة المستخدمة في معلومات الأنبوب.
يتم عرض معلومات نقطة نهاية eventfd في عمود NAME بنفس الصيغة المستخدمة في معلومات الأنبوب. تعمل هذه الميزة على نواة Linux الإصدار 5.2.0 والإصدارات الأحدث.
يمكن أن تظهر عدة حالات من هذه المعلومات في عمود NAME الخاص بالملف.
-E تحدد أنه يجب عرض الملفات المدعومة بنقطة النهاية مع معلومات نقطة النهاية، ولكن ليس ملفات نقاط النهاية نفسها.
+|-f [cfgGn]
f بمفردها توضح كيفية تفسير وسيطات اسم المسار. عند اتباعها بـ c أو f أو g أو G أو n بأي تركيبة، فإنها تحدد أنه يجب تمكين (`+`) أو تعطيل (`-`) سرد معلومات هيكل الملف الخاص بالنواة.
عادةً ما يتم اعتبار وسيط اسم المسار كاسم نظام ملف إذا كان يطابق اسم دليل "تم تركيبه عليه" الذي تم الإبلاغ عنه بواسطة [mount]({filename}../../mount)(8)، أو إذا كان يمثل جهاز كتلة، مذكورًا في ناتج "mount" ومرتبطًا باسم دليل "تم تركيبه عليه". عند تحديد +f، سيتم اعتبار جميع وسيطات اسم المسار كأنظمة ملفات، وسيقوم lsof بالإبلاغ عن خطأ إذا لم يكن أي منها كذلك. يمكن أن يكون هذا مفيدًا، على سبيل المثال، عندما لا يكون اسم نظام الملف (الجهاز "المركب عليه") جهاز كتلة. يحدث هذا لبعض أنظمة ملفات CD-ROM.
عند تحديد -f بمفردها، سيتم اعتبار جميع وسيطات اسم المسار كملفات بسيطة. وبالتالي، على سبيل المثال، فإن وسيطات ``-f -- /'' توجه lsof للبحث عن الملفات المفتوحة التي تحتوي على مسار `/`، وليس جميع الملفات المفتوحة في نظام الملفات الجذر `/`.
احرص على التأكد من أن +f و -f قد تم إنهاؤها بشكل صحيح وأنه لا تليها أي حرف (على سبيل المثال، اسم الملف أو نظام الملف) قد يتم اعتباره كمعامل. على سبيل المثال، استخدم ``--'' بعد +f و -f كما في هذه الأمثلة.
$ lsof +f -- /file/system/name
$ lsof -f -- /file/name
عادةً ما يتم تعطيل سرد المعلومات من هياكل الملفات الخاصة بالنواة، والتي يتم طلبها باستخدام خيار +f [cfgGn]، ولا تتوفر كليًا أو جزئيًا لبعض الأنظمة - على سبيل المثال، أنظمة Linux المستندة إلى /proc قبل الإصدار 2.6.22. عندما يكون البادئة الخاصة بـ f عبارة عن علامة زائد (`+`)، فإن هذه الأحرف تطلب معلومات هيكل الملف:
c عدد استخدامات هيكل الملف (غير مدعوم في Linux)
f عنوان هيكل الملف (غير مدعوم في Linux)
g اختصارات علامات الملف (Linux الإصدار 2.6.22 والإصدارات الأحدث)
الاختصار. العلامة في كود C (انظر open(2))
W O_WRONLY
RW O_RDWR
CR O_CREAT
EXCL O_EXCL
NTTY O_NOCTTY
TR O_TRUNC
AP O_APPEND
ND O_NDELAY
SYN O_SYNC
ASYN O_ASYNC
DIR O_DIRECT
DTY O_DIRECTORY
NFLK O_NOFOLLOW
NATM O_NOATIME
DSYN O_DSYNC
RSYN O_RSYNC
LG O_LARGEFILE
CX O_CLOEXEC
TMPF O_TMPFILE
G علامات الملف في شكل ست عشري (نظام Linux 2.6.22 والإصدارات الأحدث)
n عنوان عقدة هيكل الملف (ليس لنظام Linux)
عندما يكون البادئة عبارة عن علامة ناقص (`-')، فإن الأحرف نفسها تعطل عرض القيم المحددة.
يمكن استخدام عناوين هيكل الملف، وعدد مرات الاستخدام، والعلامات، وعناوين العقد لاكتشاف الملفات المتطابقة بسهولة أكبر والتي ورثتها العمليات الفرعية والملفات المتطابقة المستخدمة بواسطة عمليات مختلفة. يمكن فرز مخرجات أعمدة [lsof] حسب الأعمدة التي تحتوي على هذه القيم وعرضها لتحديد استخدام الملفات المتطابقة، أو يمكن تحليل مخرجات حقول [lsof] بواسطة برنامج نصي إضافي من نوع AWK أو Perl، أو بواسطة برنامج C.
-F f يحدد قائمة أحرف، f، تحدد الحقول التي سيتم إخراجها للمعالجة بواسطة برنامج آخر، والحرف الذي ينهي كل حقل إخراج. يتم تحديد كل حقل ليتم إخراجه باستخدام حرف واحد في f. يكون مُنهي الحقل افتراضيًا هو NL، ولكن يمكن تغييره إلى NUL (000). انظر قسم "الإخراج للبرامج الأخرى" للحصول على وصف لأحرف تعريف الحقول وعملية إخراج الحقول.
عندما تكون قائمة تحديد الأحرف فارغة، يتم تحديد جميع الحقول القياسية (باستثناء حقل الجهاز الخام، وحقل سياق الأمان، وحقل المنطقة لأسباب تتعلق بالتوافق) ويتم استخدام مُنهي الحقل NL.
عندما تحتوي قائمة تحديد الأحرف على صفر واحد فقط (`0')، يتم تحديد جميع الحقول (باستثناء حقل الجهاز الخام لأسباب تتعلق بالتوافق) ويتم استخدام حرف إنهاء NUL.
يجب تعيين مجموعات أخرى من الحقول والحرف الخاص بها في f، كما هو موضح في قسم "الإخراج للبرامج الأخرى".
عندما يحدد حرف تحديد الحقل عنصرًا لا يقوم [lsof] بإدراجه عادةً - على سبيل المثال، PPID، المحدد باستخدام -R - تحديد حرف الحقل - على سبيل المثال، ``-FR'' - فإنه يحدد أيضًا إدراج العنصر.
عندما تحتوي قائمة تحديد الأحرف على الحرف الواحد `?'، سيعرض [lsof] قائمة مساعدة بأحرف تعريف الحقول. (قم بإلغاء حرف `?' حسب الحاجة في shell الخاص بك).
-g [s] يستبعد أو يحدد قائمة الملفات للعمليات التي تكون أرقام معرف المجموعة (PGID) الاختيارية لها في المجموعة المفصولة بفواصل s - على سبيل المثال، ``123'' أو ``123,^456''. (يجب ألا تكون هناك مسافات في المجموعة).
تمثل الأرقام التي تبدأ بـ `^' (النفي) عمليات الاستبعاد.
يتم دمج أرقام PGID المتعددة في مجموعة واحدة مرتبطة بـ OR قبل المشاركة في تحديد الخيارات AND. ومع ذلك، يتم تطبيق عمليات استبعاد PGID دون دمجها أو ربطها بـ OR أو AND وتأتي في البداية قبل تطبيق معايير التحديد الأخرى.
يقوم خيار -g أيضًا بتمكين عرض أرقام PGID. عند تحديده بدون مجموعة PGID، هذا كل ما يفعله.
-H يُوجه [lsof] لطباعة الأحجام القابلة للقراءة البشرية، على سبيل المثال، 123.4K 456.7M.
-i [i] يحدد قائمة الملفات التي يتطابق أي من عناوين الإنترنت الخاصة بها مع العنوان المحدد في i. إذا لم يتم تحديد أي عنوان، فسيحدد هذا الخيار قائمة بجميع ملفات الإنترنت والشبكات 25 (HP-UX).
إذا تم تحديد -i4 أو -i6 بدون عنوان يتبعه، فسيتم عرض الملفات ذات إصدار IP المحدد، IPv4 أو IPv6. (لا يمكن استخدام تحديد IPv6 إلا إذا كان النظام يدعم IPv6، كما هو موضح في إخراج lsof مع الخيارات -h أو -?، عن طريق وجود [46] و IPv[46]). تحديد -i4 متبوعًا بـ -i6 هو نفسه تحديد -i، والعكس صحيح. تحديد -i4 أو -i6 بعد -i هو نفسه تحديد -i4 أو -i6 بمفرده.
يمكن تحديد عناوين متعددة (بحد أقصى 100) باستخدام خيارات -i متعددة. يتم دمجها في مجموعة واحدة باستخدام عامل التشغيل OR قبل المشاركة في تحديد الخيارات AND.
يتم تحديد عنوان الإنترنت بالصيغة التالية (العناصر الموجودة بين قوسين مربعين اختيارية):
[46][البروتوكول][@اسم_المضيف|عنوان_المضيف][:الخدمة|المنفذ]
حيث:
46 يحدد إصدار IP، IPv4 أو IPv6،
الذي ينطبق على العنوان التالي.
يمكن تحديد '6' فقط إذا كان نظام التشغيل يدعم IPv6. إذا لم يتم تحديد '4' أو '6'، فإن العنوان التالي ينطبق على جميع إصدارات IP.
البروتوكول هو اسم البروتوكول - TCP أو UDP أو UDPLITE.
اسم_المضيف هو اسم مضيف الإنترنت. ما لم يتم تحديد إصدار IP معين، سيتم تحديد الملفات الشبكية المفتوحة المرتبطة بأسماء المضيفين من جميع الإصدارات.
عنوان_المضيف هو عنوان IPv4 رقمي في شكل نقطي؛ أو عنوان IPv6 رقمي في شكل نقطتين، محاط بأقواس مربعة، إذا كان نظام التشغيل يدعم IPv6. عند تحديد إصدار IP، يمكن تحديد عناوين رقمية فقط.
الخدمة هو اسم في `/etc/services` - على سبيل المثال، smtp أو قائمة بها.
المنفذ هو رقم منفذ، أو قائمة بها.
يمكن استخدام خيارات IPv6 فقط إذا كان نظام التشغيل يدعم IPv6. لمعرفة ما إذا كان النظام يدعم IPv6، قم بتشغيل `lsof` وحدد الخيار `-h` أو `-?` (مساعدة). إذا كان وصف الخيار `-i` المعروض يحتوي على `[46]` و `IPv[46]`، فهذا يعني أن IPv6 مدعوم.
لا يمكن تحديد أسماء مضيفي وعناوين IPv4 إذا تم تقييد تحديد الملفات الشبكية بـ IPv6 باستخدام `-i 6`. لا يمكن تحديد أسماء مضيفي وعناوين IPv6 إذا تم تقييد تحديد الملفات الشبكية بـ IPv4 باستخدام `-i 4`. عند تعيين عنوان ملف شبكة IPv4 مفتوح في عنوان IPv6، سيكون نوع الملف المفتوح هو IPv6، وليس IPv4، وسيتم تحديده بواسطة '6'، وليس '4'.
يجب توفير مكون عنوان واحد على الأقل - 4 أو 6 أو البروتوكول أو اسم_المضيف أو عنوان_المضيف أو الخدمة. الحرف `'@'`، الذي يسبق تحديد المضيف، مطلوب دائمًا؛ وكذلك الحرف `':'`، الذي يسبق تحديد المنفذ. حدد إما اسم المضيف أو عنوان المضيف. حدد إما قائمة أسماء الخدمات أو قائمة أرقام المنافذ. إذا تم تحديد قائمة بأسماء الخدمات، فقد يلزم أيضًا تحديد البروتوكول إذا كانت أرقام منافذ TCP و UDP و UDPLITE لاسم الخدمة مختلفة. استخدم أي حالة - صغيرة أو كبيرة - للبروتوكول.
يمكن دمج أسماء الخدمات وأرقام المنافذ في قائمة تفصل بين مدخلاتها فواصل، وتفصل بين مدخلات النطاق الرقمي شرطات. لا يُسمح بوجود مسافات مضمنة، ويجب أن تنتمي جميع أسماء الخدمات إلى البروتوكول المحدد. نظرًا لأن أسماء الخدمات قد تحتوي على شرطات مضمنة، لا يمكن أن يكون إدخال بداية النطاق اسم خدمة؛ ومع ذلك، يمكن أن يكون رقم منفذ.
فيما يلي بعض العناوين النموذجية:
-i6 - IPv6 فقط
TCP:25 - TCP والمنفذ 25
@1.2.3.4 - عنوان مضيف IPv4 على الإنترنت 1.2.3.4
@[3ffe:1ebc::1]:1234 - عنوان مضيف IPv6 على الإنترنت
3fe:1ebc::1، المنفذ 1234
UDP:who - خدمة UDP "who" على المنفذ
_:513 - TCP، المنفذ 513 واسم المضيف lsof.itap
tcp@foo:1-10،smtp،99 - TCP، المنافذ من 1 إلى 10، اسم الخدمة smtp، المنفذ 99، اسم المضيف foo
tcp@bar:1-smtp - TCP، المنافذ من 1 إلى smtp، المضيف bar
:time - إما TCP أو UDP أو خدمة UDPLITE على المنفذ "time"
-K k تحدد قائمة المهام (الخيوط) للعمليات، في اللهجات التي تدعم إعداد تقارير عن المهام (الخيوط). (إذا أظهر إخراج المساعدة - أي، إخراج الخيارات -h أو -؟ - هذا الخيار، فهذا يعني أن إعداد تقارير عن المهام (الخيوط) مدعوم من قبل اللهجة.)
إذا تبعت -K قيمة، يجب أن تكون k هي "i". هذا يتسبب في تجاهل lsof للمهام، خاصة في الحالة الافتراضية، حيث يتم إدراج كل شيء عندما لا يتم تحديد أي خيارات أخرى.
عند تحديد كل من -K و -a على Linux، ويتم تحديد مهام العملية الرئيسية بواسطة خيارات أخرى، سيتم أيضًا إدراج العملية الرئيسية كما لو كانت مهمة، ولكن بدون معرف مهمة. (انظر وصف عمود TID في قسم OUTPUT.)
حيث يدعم إصدار FreeBSD الخيوط، سيتم إدراج جميع الخيوط بمعرفاتها.
بشكل عام، ترث الخيوط والمهام ملفات المُستدعي، ولكنها قد تغلق بعضها وتفتح ملفات أخرى، لذلك يقوم lsof دائمًا بالإبلاغ عن جميع الملفات المفتوحة للخيوط والمهام.
-k k تحدد اسم ملف kernel بديل بدلاً من /vmunix، /mach، إلخ. -k غير متوفر على AIX على نظام IBM RISC/System 6000.
-l يمنع تحويل أرقام معرفات المستخدمين إلى أسماء تسجيل الدخول. وهو أيضًا مفيد عندما يكون البحث عن اسم تسجيل الدخول لا يعمل بشكل صحيح أو ببطء.
+|-L [l] يمكّن (`+`) أو يعطّل (`-`) إدراج أعداد روابط الملفات، حيثما كانت متاحة - على سبيل المثال، فهي غير متاحة للمآخذ، أو معظم FIFOs والأنابيب.
عند تحديد +L بدون رقم لاحق، سيتم إدراج جميع أعداد الروابط. عند تحديد -L (الافتراضي)، لن يتم إدراج أي أعداد روابط.
عندما يتبع +L رقم، سيتم إدراج الملفات التي يكون فيها عدد الروابط أقل من هذا الرقم فقط. (لا يمكن أن يتبع -L أي رقم). سيحدد تحديد النموذج "+L1" الملفات المفتوحة التي تم إلغاء ربطها. سيحدد تحديد النموذج "+aL1 <file_system>" الملفات المفتوحة التي تم إلغاء ربطها على نظام الملفات المحدد.
للمقارنات الأخرى لعدد الروابط، استخدم إخراج الحقول (-F) والبرنامج النصي أو البرنامج اللاحق للمعالجة.
+|-m m يحدد ملف ذاكرة kernel بديل أو يقوم بتنشيط معالجة مكمل جدول التحميل.
يحدد الخيار -m m ملف ذاكرة النواة، m، بدلاً من /dev/kmem أو /dev/mem - على سبيل المثال، ملف تفريغ الذاكرة عند حدوث عطل.
يطلب الخيار +m كتابة ملف مكمل للتركيب إلى ملف الإخراج القياسي. يتم تجاهل جميع الخيارات الأخرى بصمت.
سيكون هناك سطر في ملف مكمل التركيب لكل نظام ملفات مثبت، يحتوي على دليل نظام الملفات المثبت، متبوعًا بمسافة واحدة، متبوعًا برقم الجهاز بتنسيق ست عشري "0x" - على سبيل المثال:
/ 0x801
يمكن لـ lsof استخدام ملف مكمل التركيب للحصول على أرقام الأجهزة لأنظمة الملفات عندما لا يتمكن من الحصول عليها عبر stat(2) أو lstat(2).
يحدد الخيار +m m أن m هو ملف مكمل للتركيب.
ملاحظة: الخياران +m و +m m غير متوفرين لجميع اللهجات المدعومة. تحقق من إخراج خياري lsof -h أو -؟ لمعرفة ما إذا كانت الخيارات +m و +m m متوفرة.
+|-M يمكّن (+) أو يعطّل (-) الإبلاغ عن تسجيلات برنامج إدارة المنافذ للمنافذ المحلية لـ TCP و UDP و UDPLITE، حيث يتم دعم تعيين المنافذ. (راجع الفقرة الأخيرة من وصف هذا الخيار للحصول على معلومات حول مكان دعم الإبلاغ عن تسجيل برنامج إدارة المنافذ.)
يتم تعيين وضع الإبلاغ الافتراضي بواسطة مُنشئ lsof باستخدام التعريف HASPMAPENABLED في ملف الرأس machine.h الخاص باللهجة. يتم توزيع lsof مع تعريف HASPMAPENABLED معطّلًا، لذلك يتم تعطيل الإبلاغ عن برنامج إدارة المنافذ افتراضيًا ويجب طلبه باستخدام +M. سيؤدي تحديد خياري lsof -h أو -؟ إلى الإبلاغ عن الوضع الافتراضي. يعد تحديد تعطيل تسجيل برنامج إدارة المنافذ عندما يكون معطلاً بالفعل أو تمكينه عندما يكون ممكّنًا بالفعل أمرًا مقبولًا. عند تمكين الإبلاغ عن تسجيل برنامج إدارة المنافذ، يعرض lsof تسجيل برنامج إدارة المنافذ (إن وجد) للمنافذ المحلية لـ TCP أو UDP أو UDPLITE في أقواس مربعة مباشرة بعد أرقام المنافذ أو أسماء الخدمات - على سبيل المثال، ":1234[اسم]" أو ":اسم[100083]". قد تكون معلومات التسجيل اسمًا أو رقمًا، اعتمادًا على ما قدمه البرنامج الذي يسجل المنفذ إلى برنامج إدارة المنافذ عند تسجيل المنفذ.
عند تمكين الإبلاغ عن تسجيل برنامج إدارة المنافذ، قد يعمل lsof بشكل أبطأ قليلاً أو حتى يتوقف عند أن يصبح الوصول إلى برنامج إدارة المنافذ مزدحمًا أو متوقفًا. قم بعكس وضع الإبلاغ لتحديد ما إذا كان الإبلاغ عن تسجيل برنامج إدارة المنافذ يبطئ أو يعيق lsof.
لأغراض الإبلاغ عن تسجيل برنامج إدارة المنافذ، يعتبر lsof منفذ TCP أو UDP أو UDPLITE محليًا إذا: كان موجودًا في الجزء المحلي من هيكله الموجود في النواة؛ أو إذا كان موجودًا في الجزء الأجنبي من هيكله الموجود في النواة وكانت عناوين الإنترنت المحلية والأجنبية هي نفسها؛ أو إذا كان موجودًا في الجزء الأجنبي من هيكله الموجود في النواة وكان عنوان الإنترنت الأجنبي هو INADDR_LOOPBACK (127.0.0.1). قد يؤدي هذا القاعدة إلى تجاهل lsof لبعض المنافذ الأجنبية على الأجهزة التي تحتوي على واجهات متعددة عندما يكون عنوان الإنترنت الأجنبي على واجهة مختلفة عن العنوان المحلي.
راجع قسم الأسئلة الشائعة في lsof (يوضح قسم الأسئلة الشائعة موقعه) لمزيد من المناقشة حول مشكلات تسجيل برنامج إدارة المنافذ.
يتم دعم الإبلاغ عن تسجيل برنامج إدارة المنافذ فقط على الأنظمة التي تحتوي على ملفات رأس RPC. (قد لا تحتوي بعض توزيعات Linux مع GlibC 2.14 عليها). عند دعم الإبلاغ عن تسجيل برنامج إدارة المنافذ، سيعرض إخراج المساعدة -h أو -؟ الخيار +|-M.
-n يمنع تحويل أرقام الشبكة إلى أسماء المضيفين للملفات الخاصة بالشبكة. قد يؤدي منع التحويل إلى جعل lsof يعمل بشكل أسرع. كما أنه مفيد عندما لا يعمل البحث عن اسم المضيف بشكل صحيح.
-N يحدد عرض قائمة بملفات NFS.
-o يوجه lsof لعرض إزاحة الملف في جميع الأوقات. يتسبب هذا في تغيير عنوان عمود الإخراج SIZE/OFF إلى OFFSET. ملاحظة: على بعض أنظمة التشغيل، لا يمكن لـ lsof الحصول على معلومات دقيقة أو متسقة لإزاحة الملف من مصادر بيانات النواة الخاصة به، وأحيانًا لأنواع معينة من الملفات (مثل ملفات المقبس). راجع قسم الأسئلة الشائعة في lsof (يوضح قسم الأسئلة الشائعة موقعه) لمزيد من المعلومات.
يتم استبعاد الخيارين -o و -s؛ لا يمكن تحديد كليهما. عند عدم تحديد أي منهما، يعرض lsof القيمة المناسبة والمتاحة لنوع الملف - إما الحجم أو الإزاحة.
-o o يحدد عدد الأرقام العشرية (o) التي سيتم طباعتها بعد "0t" لإزاحة الملف قبل التبديل إلى تنسيق "0x...". يشير وجود قيمة o تساوي صفرًا (غير محدودة) إلى أن lsof يجب أن يستخدم تنسيق "0t" لجميع مخرجات الإزاحة.
هذا الخيار لا يوجه lsof لعرض الإزاحة في جميع الأوقات؛ حدد -o (بدون رقم لاحق) للقيام بذلك. يحدد -o o فقط عدد الأرقام بعد "0t" في كل من إخراج الحجم والإزاحة المختلطين أو إخراج الإزاحة فقط. وبالتالي، على سبيل المثال، لتوجيه lsof لعرض الإزاحة في جميع الأوقات مع عدد أرقام عشري قدره 10، استخدم:
-o -o 10
أو
-oo10
عادةً ما يكون عدد الأرقام الافتراضي المسموح به بعد "``0t``" هو 8، ولكن قد يكون قد تم تغييره بواسطة مُنشئ lsof. راجع وصف الخيار -o o في إخراج الخيار -h أو -؟ لتحديد القيمة الافتراضية المستخدمة.
-O يوجه lsof لتجاوز الاستراتيجية التي يستخدمها لتجنب التعرض لحظر من خلال بعض عمليات النواة - أي، عن طريق تنفيذها في عمليات فرعية. راجع الأقسام المتعلقة بالحظر والتأخيرات وتجنب حظر النواة لمزيد من المعلومات حول عمليات النواة التي قد تحظر lsof.
في حين أن استخدام هذا الخيار سيقلل من الحمل الزائد لبدء تشغيل lsof، إلا أنه قد يتسبب أيضًا في تعطل lsof عندما لا تستجيب النواة لوظيفة. استخدم هذا الخيار بحذر.
-p s يستبعد أو يحدد قائمة بالملفات للعمليات التي تكون أرقام تعريف العملية (PID) الخاصة بها في المجموعة المفصولة بفواصل s - على سبيل المثال، "123" أو "123،^456". (لا ينبغي أن تكون هناك مسافات في المجموعة).
أرقام معرّفات العمليات (PID) التي تبدأ بـ `^` (نفي) تمثل الاستثناءات.
تُجمع معرّفات عمليات متعددة في مجموعة واحدة باستخدام عامل التشغيل "OR" قبل المشاركة في تحديد الخيارات باستخدام عامل التشغيل "AND". ومع ذلك، يتم تطبيق استثناءات معرّف العملية (PID) دون استخدام عامل التشغيل "OR" أو "AND" وتُطبّق قبل تطبيق معايير التحديد الأخرى.
-P يمنع تحويل أرقام المنافذ إلى أسماء منافذ لملفات الشبكة (يتم تعلم التعيين عادةً من /etc/services). قد يؤدي منع التحويل إلى جعل lsof يعمل بشكل أسرع قليلاً. وهو مفيد أيضًا عندما لا يعمل البحث عن اسم المنفذ بشكل صحيح.
-Q يتجاهل مصطلحات البحث الفاشلة. عندما يُطلب من lsof البحث عن مستخدمي ملف، أو عن مستخدمي جهاز، أو عن معرّف عملية (PID) معين، أو عن بروتوكولات معينة مستخدمة بواسطة هذا المعرّف، فسيعرض lsof خطأ إذا كانت أي من نتائج البحث فارغة. سيؤدي خيار -Q إلى تغيير هذا السلوك بحيث يُرجع lsof بدلاً من ذلك رمز خروج ناجح (0) حتى لو كانت أي من نتائج البحث فارغة. بالإضافة إلى ذلك، لن يتم الإبلاغ عن مصطلحات البحث المفقودة إلى stderr.
+|-r [t[c<N>][m<fmt>]]
يضع lsof في وضع التكرار. يقوم lsof بعد ذلك بإدراج الملفات المفتوحة المحددة بواسطة الخيارات الأخرى، ويتأخر لمدة t ثانية (افتراضيًا خمس عشرة ثانية)، ثم يكرر الإدراج، مع التأخير والإدراج بشكل متكرر حتى يتم إيقافه بواسطة شرط محدد بواسطة البادئة الخاصة بالخيار.
إذا كانت البادئة هي `-'، فإن وضع التكرار يكون لانهائيًا. يجب إنهاء lsof باستخدام إشارة مقاطعة أو إنهاء. `c<N>` هو لتحديد حدود التكرار؛ إذا وصل عدد التكرارات إلى `<N>`، فسيتوقف lsof عن نفسه.
إذا كانت البادئة هي `+'، فسيتوقف وضع التكرار في الدورة الأولى التي لا يتم فيها إدراج أي ملفات مفتوحة، وبالطبع عند إيقاف lsof باستخدام إشارة مقاطعة أو إنهاء. عندما ينتهي وضع التكرار لأن لم يتم إدراج أي ملفات، سيكون رمز خروج العملية صفرًا إذا تم إدراج أي ملفات مفتوحة؛ وواحد، إذا لم يتم إدراج أي ملفات.
يضع lsof علامة في نهاية كل إدراج: إذا كان إخراج الحقل قيد التقدم (تم تحديد الخيار -F)، فإن العلامة الافتراضية هي m؛ وإلا فإن العلامة الافتراضية هي ========. تتبع العلامة حرف سطر جديد (NL).
يحدد الوسيط الاختياري "m<fmt>" تنسيقًا لسطر العلامة. يتم تفسير الأحرف `<fmt>` التي تتبع `m` كتحديد تنسيق لوظيفة `strftime(3)`، عندما تكون كل من هذه الوظيفة ووظيفة `localtime(3)` متاحتين في مكتبة C الخاصة باللغة. راجع وثائق `strftime(3)` لمعرفة ما يمكن أن يظهر في تحديد التنسيق الخاص به. لاحظ أنه عند طلب إخراج الحقل باستخدام الخيار -F، لا يمكن أن يحتوي `<fmt>` على تنسيق السطر الجديد، `\%n`. لاحظ أيضًا أنه عندما يحتوي `<fmt>` على مسافات أو أحرف أخرى تؤثر على تفسير الصدفة (shell) للمعلمات، فيجب اقتباس `<fmt>` بشكل مناسب.
يقلل وضع التكرار من حمل بدء lsof، لذلك من الأكثر كفاءة استخدام هذا الوضع بدلاً من استدعاء lsof بشكل متكرر من برنامج نصي في الصدفة (shell)، على سبيل المثال.
لاستخدام وضع التكرار بكفاءة، رافقه بتحديد خيارات تحديد أخرى لـ lsof، بحيث يتم تقليل مقدار الوصول إلى ذاكرة النواة الذي يقوم به lsof إلى الحد الأدنى. الخيارات التي تقوم بالتصفية على مستوى العملية - مثل -c و -g و -p و -u - هي عوامل التحديد الأكثر كفاءة.
وضع التكرار مفيد عند استخدامه مع إخراج الحقول (انظر وصف الخيار -F) وبرنامج awk أو Perl مشرف، أو برنامج C.
-R يوجّه lsof لعرض رقم تعريف العملية الأصلية في عمود PPID.
-s [p:s] يوجّه lsof لعرض حجم الملف في جميع الأوقات. يتسبب هذا في تغيير عنوان عمود الإخراج SIZE/OFF إلى SIZE. إذا لم يكن للملف حجم، فلن يتم عرض أي شيء.
تتوفر الصورة الاختيارية -s p:s فقط لبعض اللهجات، وفقط عندما يسرد إخراج المساعدة -h أو -؟ ذلك.
عند توفر الصورة الاختيارية، يمكن أن يتبع الحرف s اسم بروتوكول (p)، إما TCP أو UDP، ونقطتان رأسيتان (:') وقائمة مفصولة بفواصل بأسماء البروتوكول، يتسبب هذا الخيار في استبعاد الملفات المفتوحة لـ TCP و UDP إذا كانت أسماؤها في القائمة (s) مسبوقة بعلامة `^`؛ أو تضمينها إذا لم تكن أسماؤها مسبوقة بعلامة `^`.
قد تدعم اللهجات التي تدعم هذا الخيار بروتوكولًا واحدًا فقط. عند تحديد بروتوكول غير مدعوم، سيتم عرض رسالة تشير إلى أن أسماء الحالات لهذا البروتوكول غير متوفرة.
عند تحديد قائمة تضمين، ستكون الملفات الشبكية التي تحتوي على أسماء حالات في القائمة فقط موجودة في إخراج lsof. وبالتالي، فإن تحديد اسم حالة واحد يعني أنه سيتم إدراج الملفات الشبكية التي تحتوي على اسم الحالة هذا فقط.
لا يهم حجم الأحرف في أسماء البروتوكولات أو الحالات، ولكن لا يجب أن تكون هناك مسافات، والنقطتان الرأسيتان (:) التي تفصل بين اسم البروتوكول (p) وقائمة اسم الحالة (s) مطلوبة.
إذا كان من المفترض إدراج ملفات TCP و UDP فقط، كما هو محدد من خلال عمليات الاستبعاد والتضمين المحددة، فيجب تحديد الخيار -i أيضًا. إذا كان من المفترض إدراج ملفات بروتوكول واحد فقط، فأضف اسمه كمعامل إلى الخيار -i.
على سبيل المثال، لإدراج الملفات الشبكية التي تحتوي على حالة TCP LISTEN فقط، استخدم:
-iTCP -sTCP:LISTEN
أو، على سبيل المثال، لإدراج الملفات الشبكية التي تحتوي على جميع حالات UDP باستثناء Idle، استخدم:
-iUDP -sUDP:^Idle
تختلف أسماء الحالات باختلاف لهجات UNIX، لذلك من المستحيل توفير قائمة كاملة. بعض أسماء حالات TCP الشائعة هي: CLOSED، IDLE، BOUND، LISTEN، ESTABLISHED، SYN_SENT، SYN_RCDV، ESTABLISHED، CLOSE_WAIT، FIN_WAIT1، CLOSING، LAST_ACK، FIN_WAIT_2، و TIME_WAIT. اسما الحالتين الشائعتين لـ UDP هما Unbound و Idle.
راجع الأسئلة الشائعة لـ lsof (يحدد قسم الأسئلة الشائعة موقعه) لمزيد من المعلومات حول كيفية استخدام استبعاد وتضمين حالة البروتوكول، بما في ذلك الأمثلة.
الخياران -o (بدون رقم عشري لاحق) و -s (بدون اسم بروتوكول وقائمة حالة لاحقة) مستبعدان؛ لا يمكن تحديدهما معًا. عندما لا يتم تحديد أي منهما، يعرض lsof القيمة المناسبة والمتاحة لنوع الملف - حجم أو إزاحة.
نظرًا لأن بعض أنواع الملفات ليس لها أحجام حقيقية - المقابس، و FIFOs، والأنابيب، وما إلى ذلك - يعرض lsof لكميات المحتوى الموجودة في المخازن المؤقتة للنواة المرتبطة بها، إن أمكن.
-S [t] يحدد قيمة اختيارية لوقت الانتهاء بالثواني للوظائف الأساسية - `lstat(2)`، و `[readlink]({filename}../../readlink)(2)`، و `[stat]({filename}../../stat)(2)` - والتي قد تتسبب بخلاف ذلك في حالة توقف. الحد الأدنى لـ `t` هو اثنان؛ والقيمة الافتراضية هي خمسة عشر؛ عند عدم تحديد قيمة، يتم استخدام القيمة الافتراضية.
انظر إلى قسم "الكتل وأوقات الانتهاء" لمزيد من المعلومات.
-T [t] يتحكم في الإبلاغ عن بعض معلومات TCP/TPI، والتي يتم الإبلاغ عنها أيضًا بواسطة `[netstat]({filename}../../netstat)(1)`، بعد عناوين الشبكة. في الإخراج العادي، تظهر المعلومات بين قوسين، حيث يتم تحديد كل عنصر باستثناء اسم حالة TCP أو TPI بواسطة كلمة رئيسية، متبوعة بعلامة '='، مفصولة عن بعضها البعض بمسافة واحدة:
<اسم حالة TCP أو TPI>
QR = <طول قائمة الانتظار للقراءة>
QS = <طول قائمة الانتظار للإرسال>
SO = <خيارات المقبس وقيمها>
SS = <حالات المقبس>
TF = <أعلام TCP وقيمها>
WR = <طول نافذة القراءة>
WW = <طول نافذة الكتابة>
لا يتم الإبلاغ عن جميع القيم لجميع لهجات UNIX. يتم الإبلاغ عن قيم العناصر (عند توفرها) بعد اسم العنصر وعلامة '='.
عندما يكون وضع إخراج الحقول قيد التشغيل (راجع "الإخراج للبرامج الأخرى")، يظهر كل عنصر كحقل مع حرف 'T' في البداية.
-T بدون أي أحرف لاحقة يعطل الإبلاغ عن معلومات TCP/TPI.
-T مع الأحرف التالية يحدد الإبلاغ عن معلومات TCP/TPI محددة:
f يحدد الإبلاغ عن خيارات المقبس وحالاتها وقيمها وأعلام TCP وقيمها.
q يحدد الإبلاغ عن طول قائمة الانتظار.
s يحدد الإبلاغ عن حالة الاتصال.
w يحدد الإبلاغ عن حجم النافذة.
لا يتم تمكين جميع التحديدات لبعض لهجات UNIX. يمكن تحديد الحالة لجميع اللهجات ويتم الإبلاغ عنها افتراضيًا. سيعرض إخراج المساعدة -h أو -؟ لـ خيار -T ما هي التحديدات التي يمكن استخدامها مع لهجة UNIX.
عند استخدام -T لتحديد المعلومات - أي أنه متبوع بواحد أو أكثر من أحرف التحديد - يتم تعطيل عرض الحالة افتراضيًا، ويجب تحديده مرة أخرى بشكل صريح في الأحرف التالية لـ -T. (وبالتالي، فإن الإعداد الافتراضي يعادل -Ts). على سبيل المثال، إذا كانت هناك حاجة إلى أطوال قوائم الانتظار والحالة، استخدم -Tqs.
قد يتم الإبلاغ عن خيارات المقبس وحالات المقبس وبعض قيم المقبس وأعلام TCP وقيمة TCP واحدة (عند توفرها في لهجة UNIX) في شكل الأسماء التي تظهر عادةً بعد SO_ و so_ و SS_ و TCP_ و TF_ في ملفات الرأس الخاصة باللهجة - غالبًا <sys/socket.h>، و <sys/socketvar.h>، و <netinet/tcp_var.h>. راجع هذه الملفات الرأسية لمعرفة معنى الأعلام والخيارات والحالات والقيم.
``SO='' يسبق خيارات المقبس وقيمها؛ ``SS=''، حالات المقبس؛ و ``TF=''، أعلام TCP وقيمها.
إذا كان للعلم أو الخيار قيمة، فستتبع القيمة اسم العلم أو الخيار وعلامة '=' - على سبيل المثال، SO=LINGER=5''،SO=QLIM=5''، ``TF=MSS=512''. يمكن الإبلاغ عن القيم السبع التالية:
الاسم تم الإبلاغ الوصف (الرمز الشائع)
KEEPALIVE وقت المراقبة (SO_KEEPALIVE)
LINGER وقت الانتظار (SO_LINGER)
MSS أقصى حجم للقطعة (TCP_MAXSEG)
PQLEN عدد الاتصالات الجزئية في قائمة الانتظار
QLEN عدد الاتصالات المكتملة في قائمة الانتظار
QLIM الحد الأقصى لعدد الاتصالات المكتملة في قائمة الانتظار
RCVBUF طول المخزن المؤقت للاستقبال (SO_RCVBUF)
SNDBUF طول المخزن المؤقت للإرسال (SO_SNDBUF)
يمكن العثور على تفاصيل حول خيارات المقبس والقيم وحالات المقبس وعلامات TCP والقيم التي قد يتم عرضها لأنواع UNIX معينة في إجابة أسئلة "لماذا لا يعرض lsof خيارات المقبس وحالات المقبس وعلامات TCP والقيم لنظامي؟" و "لماذا لا يعرض lsof عدد الاتصالات الجزئية في قائمة الانتظار لنظامي؟" في قسم الأسئلة الشائعة (FAQ) لـ lsof (يعطي قسم الأسئلة الشائعة موقعه). على نظام Linux، يقوم هذا الخيار أيضًا بطباعة حالة مقابس نطاق UNIX.
-t ينتج مخرجات موجزة تتكون فقط من معرفات العمليات (بدون رأس)، بحيث يسهل استخدامها برمجيًا. على سبيل المثال:
# إعادة تحميل أي شيء يستخدم SSL قديم
lsof -t /lib/*/libssl.so.* | xargs -r kill -HUP
# الحصول على قائمة بالعمليات ثم التكرار عليها (فقط Bash)
mapfile -t pids < <(
lsof -wt /var/log/your.log
)
for pid in "${pids[@]}" ; do
your_command -p "$pid"
done
خيار -t يعني ضمنيًا خيار -w.
-u s يحدد قائمة الملفات للعمليات التي يمتلكها المستخدم الذي تتضمن أسماء تسجيل الدخول أو أرقام معرف المستخدم الخاصة به في المجموعة المفصولة بفواصل s - على سبيل المثال، "abe"، أو "548،root". (يجب ألا تكون هناك مسافات في المجموعة).
يتم دمج أسماء تسجيل الدخول أو أرقام معرف المستخدم المتعددة في مجموعة واحدة مرتبطة بـ OR قبل المشاركة في تحديد خيارات AND.
إذا كان اسم تسجيل الدخول أو معرف المستخدم مسبوقًا بـ "\`"، فإنه يصبح نفيًا - أي أن ملفات العمليات التي يمتلكها اسم تسجيل الدخول أو معرف المستخدم لن يتم سردها أبدًا. لا يتم ربط تحديد اسم تسجيل الدخول أو معرف المستخدم المنفي بـ AND أو OR مع عمليات التحديد الأخرى؛ يتم تطبيقه قبل جميع عمليات التحديد الأخرى ويستبعد تمامًا سرد ملفات العملية. على سبيل المثال، لتوجيه lsof لاستبعاد سرد الملفات التي تنتمي إلى عمليات root، حدد "-u^root" أو "-u^0".
-U يحدد قائمة بملفات مقبس نطاق UNIX.
-v يحدد قائمة بمعلومات إصدار lsof، بما في ذلك: رقم المراجعة؛ وقت إنشاء ملف lsof الثنائي؛ ومن قام بإنشاء الملف الثنائي وأين؛ واسم المترجم المستخدم لإنشاء ملف lsof الثنائي؛ ورقم إصدار المترجم عند توفره بسهولة؛ وأعلام المترجم والمحمل المستخدمة لإنشاء ملف lsof الثنائي؛ ومعلومات النظام، وعادةً ما تكون إخراج الخيار -a للأمر uname.
-V يوجه lsof للإشارة إلى العناصر التي طلبها ولم يتمكن من العثور عليها - أسماء الأوامر، وأسماء الملفات، وعناوين الإنترنت أو الملفات، وأسماء تسجيل الدخول، وملفات NFS، ومعرفات العمليات، ومعرفات مجموعات العمليات، ومعرفات المستخدمين.
عندما يتم ربط خيارات أخرى بخيارات البحث، أو عندما تحد خيارات وقت التجميع من سرد بعض الملفات، قد لا يبلغ lsof أنه فشل في العثور على عنصر بحث عندما يمنع خيار مرتبط أو خيار وقت التجميع سرد الملف المفتوح الذي يحتوي على عنصر البحث الذي تم العثور عليه.
على سبيل المثال، قد لا يُبلغ الأمر lsof -V -iTCP@foobar -a -d 999 عن فشل في تحديد الملفات المفتوحة في TCP@foobar وقد لا يعرض أي ملفات، إذا لم يكن هناك أي ملفات لها رقم واصف ملف يبلغ 99. تنشأ حالة مماثلة عند تعريف HASSECURITY و HASNOSOCKSECURITY في وقت التجميع، مما يمنع عرض الملفات المفتوحة.
+|-w يمكّن (+) أو يعطّل (-) كبت رسائل التحذير.
قد يختار مُنشئ lsof أن يكون لرسائل التحذير معطلة أو مُمكنة افتراضيًا. يتم الإشارة إلى حالة رسالة التحذير الافتراضية في ناتج الخيار -h أو -?. يُعتبر تعطيل رسائل التحذير عندما تكون معطلة بالفعل أو تمكينها عندما تكون ممكنة بالفعل أمرًا مقبولًا.
يُفترض الخيار -t ضمنيًا الخيار -w.
-x [fl] يمكن أن يصاحب الخيارين +d و +D لتوجيه معالجتهما لعبور الروابط الرمزية و/أو نقاط تحميل نظام الملفات التي تتم مواجهتها عند فحص الدليل (+d) أو شجرة الدليل (+D).
إذا تم تحديد -x بمفرده دون معلمة تالية، يتم تمكين معالجة عبور كل من الروابط الرمزية ونقاط تحميل نظام الملفات. لاحظ أنه عند تحديد -x بدون معلمة، يجب أن يبدأ الوسيط التالي بـ - أو +.
تُمكّن المعلمة الاختيارية f معالجة عبور نقطة تحميل نظام الملفات؛ l، معالجة عبور الرابط الرمزي.
لا يمكن توفير الخيار -x بدون توفير الخيار +d أو +D أيضًا.
-X هذا خيار خاص باللهجة.
AIX: يطلب هذا الخيار الخاص بنظام IBM AIX RISC/System 6000 عرض مراجع ملف النص والمكتبة المشتركة التي تم تنفيذها.
تحذير: نظرًا لأن هذا الخيار يستخدم دالة readx() في النواة، فقد يتسبب استخدامه على نظام AIX مزدحم في توقف عملية التطبيق بالكامل بحيث لا يمكن قتلها أو إيقافها. لم أرَ هذا يحدث مطلقًا أو لم أتلق أي تقارير عنه، لكنني أعتقد أن هناك احتمالًا بعيدًا لحدوث ذلك.
افتراضيًا، يتم تعطيل استخدام readx(). على نظام AIX 5L والإصدارات الأحدث، قد تحتاج lsof إلى إذن setuid-root لتنفيذ الإجراءات التي يطلبها هذا الخيار.
قد يحدد مُنشئ lsof أن الخيار -X يجب أن يقتصر على العمليات التي يكون معرف المستخدم الحقيقي لها هو المستخدم الجذر. إذا تم ذلك، فلن يظهر الخيار -X في ناتج المساعدة -h أو -? إلا إذا كان معرف المستخدم الحقيقي لعملية lsof هو المستخدم الجذر. يسمح التوزيع الافتراضي لـ lsof لأي معرف مستخدم بتحديد -X، لذلك افتراضيًا سيظهر في ناتج المساعدة.
عند تعطيل استخدام readx() في AIX، قد لا تتمكن lsof من الإبلاغ عن معلومات لجميع مراجع ملفات النص والمحمل، ولكن قد تتجنب أيضًا تفاقم خطأ بحث الدليل في نواة AIX، والمعروف باسم خطأ معرف الجزء الصفحي القديم.
يمكن أن تؤدي الدالة readx()، التي تستخدمها lsof أو أي برنامج آخر للوصول إلى بعض أقسام الذاكرة الافتراضية للنواة، إلى تشغيل خطأ معرف الجزء الصفحي القديم. يمكن أن يتسبب في اعتقاد دالة dir_search() في النواة بشكل خاطئ أن جزءًا من نسخة في الذاكرة من دليل نظام الملفات قد تم مسحه. يمكن أن يؤدي تطبيق عملية أخرى، مختلفة عن lsof، إلى طلب البحث في الدليل في النواة - على سبيل المثال، عن طريق استخدام open(2) - إلى جعل dir_search() تدخل في حلقة لا نهائية، وبالتالي تعليق عملية التطبيق.
راجع قسم الأسئلة الشائعة (FAQ) الخاص بـ lsof (يُوضح القسم موقعه) وملف 00README الخاص بتوزيعة lsof للحصول على وصف أكثر اكتمالاً لخطأ "معرّف الجزء القديم" (Stale Segment ID bug)، و APAR الخاص به، وطرق تحديد استخدام readx() عند تجميع lsof.
لينكس: يطلب هذا الخيار الخاص بنظام لينكس من lsof تخطي الإبلاغ عن معلومات حول جميع ملفات TCP و UDP و UDPLITE IPv4 و IPv6 المفتوحة.
هذا الخيار الخاص بنظام لينكس مفيد للغاية عندما يحتوي النظام على عدد كبير جدًا من ملفات TCP و UDP و UDPLITE المفتوحة، والتي ستستغرق معالجة معلوماتها في الملفات /proc/net/tcp* و /proc/net/udp* وقتًا طويلاً لـ lsof، والإبلاغ عنها ليس ذا أهمية.
استخدم هذا الخيار بحذر وفقط عندما تكون متأكدًا من أن المعلومات التي تريد أن يعرضها lsof ليست مرتبطة بملفات مقابس TCP أو UDP أو UDPLITE المفتوحة.
سولاريس 10 والإصدارات الأحدث: يطلب هذا الخيار الخاص بنظام سولاريس 10 والإصدارات الأحدث الإبلاغ عن المسارات المخزنة مؤقتًا للملفات التي تم حذفها - أي إزالتها باستخدام rm(1) أو unlink(2).
يتبع المسار المخزّن مؤقتًا السلسلة `` (deleted) للإشارة إلى أن المسار الذي تم من خلاله فتح الملف قد تم حذفه.
نظرًا لأن التغييرات التي يتم إجراؤها على المسار - أي إعادة التسمية باستخدام mv(1) أو rename(2) - لا يتم تسجيلها في المسار المخزّن مؤقتًا، فإن ما يبلغ عنه lsof هو المسار الذي تم من خلاله فتح الملف، وليس مساره النهائي المختلف المحتمل.
-z [z] يحدد كيفية التعامل مع معلومات سولاريس 10 والإصدارات الأحدث.
بدون وسيطة تالية - على سبيل المثال، NO z - يحدد الخيار أن أسماء المناطق يجب سردها في عمود الإخراج ZONE.
يمكن أن يتبع الخيار -z اسم منطقة، z. وهذا يتسبب في قيام lsof بسرد الملفات المفتوحة فقط للعمليات الموجودة في تلك المنطقة. يمكن تحديد أزواج متعددة من الخيارات والوسائط -z z لتشكيل قائمة من المناطق المسماة. سيتم سرد أي ملف مفتوح لأي عملية في أي من المناطق، مع مراعاة الشروط الأخرى المحددة بواسطة خيارات ووسائط أخرى.
-Z [Z] يحدد كيفية التعامل مع سياقات أمان SELinux. يتم تعطيل دعم حرف إخراج المجال 'Z' عندما يتم تعطيل SELinux في نواة لينكس قيد التشغيل.
بدون وسيطة تالية - على سبيل المثال، NO Z - يحدد الخيار أنه يجب سرد سياقات الأمان في عمود إخراج SECURITY-CONTEXT.
يمكن أن يتبع الخيار -Z اسم سياق أمان أحرف البدل، Z. وهذا يتسبب في قيام lsof بسرد الملفات المفتوحة فقط للعمليات الموجودة في سياق الأمان هذا. يمكن تحديد أزواج متعددة من الخيارات والوسائط -Z Z لتشكيل قائمة من سياقات الأمان. سيتم سرد أي ملف مفتوح لأي عملية في أي من سياقات الأمان، مع مراعاة الشروط الأخرى المحددة بواسطة خيارات ووسائط أخرى. لاحظ أنه يمكن أن يكون Z هو A:B:C أو *:B:C أو A:B:* أو *:*:* للمطابقة مع سياق A:B:C.
-- تُعد علامة "الشرطتين المتتاليتين" بمثابة مؤشر يشير إلى نهاية الخيارات المفتاحية.
يمكن استخدامها، على سبيل المثال، عندما يبدأ اسم الملف الأول بعلامة "ناقص". يمكن أيضًا استخدامها عندما يجب الإشارة إلى عدم وجود قيمة للخيار المفتاحي الأخير عن طريق وجود علامة "ناقص" في الخيار التالي وقبل بدء أسماء الملفات.
names: هذه هي مسارات الملفات المحددة التي سيتم سردها. يتم حل الروابط الرمزية قبل استخدامها.
يمكن فصل الاسم الأول عن الخيارات السابقة باستخدام الخيار "--".
إذا كان الاسم هو دليل التثبيت لنظام ملفات أو جهاز نظام الملفات، فسيرد [lsof](/) جميع الملفات المفتوحة على نظام الملفات. لكي يُعتبر الاسم نظام ملفات، يجب أن يتطابق مع اسم دليل التثبيت في مخرجات [mount]({filename}../../mount)(8)، أو يتطابق مع اسم جهاز الكتلة المرتبط باسم دليل التثبيت. يمكن استخدام الخيارين +|-f لإجبار [lsof](/) على اعتبار الاسم معرف نظام ملفات (+f) أو ملف بسيط (-f).
إذا كان الاسم هو مسار لدليل ليس دليل التثبيت لنظام ملفات، فسيتم التعامل معه تمامًا مثل أي ملف عادي - أي أن سرد محتوياته يقتصر على العمليات التي فتحته كملف أو كدليل خاص بالعملية، مثل الدليل الجذر أو الدليل الحالي. لطلب البحث عن الملفات المفتوحة داخل اسم الدليل، استخدم الخيارين +d s و +D D.
إذا كان الاسم هو الاسم الأساسي لعائلة من الملفات المتعددة - على سبيل المثال، /dev/pt[cs] في نظام AIX، فسيرد [lsof](/) جميع الملفات المتعددة المرتبطة بالجهاز والتي تم فتحها - على سبيل المثال، /dev/pt[cs]/1، /dev/pt[cs]/2، إلخ.
إذا كان الاسم هو اسم مقبس مجال UNIX، فسيقوم [lsof](/) عادةً بالبحث عنه باستخدام أحرف الاسم فقط - تمامًا كما هو محدد ومسجل في هيكل المقبس في النواة. (انظر الفقرة التالية للحالة الاستثنائية في نظام Linux.) تحديد مسار نسبي - على سبيل المثال، ./file - بدلاً من المسار المطلق للملف - على سبيل المثال، /tmp/file - لن يعمل لأن [lsof](/) يجب أن يطابق الأحرف التي تحددها مع ما يجده في هياكل مقبس مجال UNIX في النواة.
إذا كان الاسم هو اسم مقبس مجال UNIX في نظام Linux، في حالة واحدة، يمكن لـ [lsof](/) البحث عنه باستخدام رقم الجهاز ورقم العقدة الخاص به، مما يسمح بأن يكون الاسم مسارًا نسبيًا. تتطلب هذه الحالة أن يستخدم العملية التي أنشأت المقبس المسار المطلق - أي المسار الذي يبدأ بشرطة مائلة ('/') - وبالتالي يتم تخزينه في ملف /proc/net/unix؛ ويتطلب أيضًا أن يكون [lsof](/) قادرًا على الحصول على أرقام الجهاز والعقدة لكل من المسار المطلق في /proc/net/unix والاسم عبر استدعاءات النظام الناجحة [stat]({filename}../../stat)(2). عندما تتحقق هذه الشروط، سيكون [lsof](/) قادرًا على البحث عن مقبس مجال UNIX عند تحديد مسار إليه في الاسم. على سبيل المثال، إذا كان المسار هو /dev/log، وتم بدء بحث [lsof](/) عندما يكون الدليل الحالي هو /dev، فيمكن أن يكون الاسم هو ./log.
إذا لم يكن الاسم من بين ما سبق، فسوف يعرض lsof أي ملفات مفتوحة يكون جهازها ورقم العقدة الخاصة بها مطابقًا للمسار المحدد.
إذا قمت أيضًا بتحديد الخيار -b، فإن الأسماء الوحيدة التي يمكنك تحديدها بأمان هي أنظمة الملفات التي يوفر جدول التحميل الخاص بك أرقام أجهزة بديلة لها. راجع قسمي "تجنب الحظر على مستوى النواة" و "أرقام الأجهزة البديلة" للحصول على مزيد من المعلومات.
يتم دمج أسماء الملفات المتعددة في مجموعة واحدة مرتبطة بـ OR قبل المشاركة في تحديد الخيارات باستخدام AND.
AFS
يدعم Lsof التعرف على ملفات AFS للإصدارات التالية (وإصدارات AFS):
AIX 4.1.4 (AFS 3.4a)
HP-UX 9.0.5 (AFS 3.4a)
Linux 1.2.13 (AFS 3.3)
Solaris 2.[56] (AFS 3.4a)
قد يتعرف على ملفات AFS في إصدارات أخرى من هذه اللهجات، ولكن لم يتم اختباره هناك. اعتمادًا على كيفية تنفيذ AFS، قد يتعرف lsof على ملفات AFS في لهجات أخرى، أو قد يواجه صعوبات في التعرف على ملفات AFS في اللهجات المدعومة.
قد يواجه Lsof صعوبة في تحديد جميع جوانب ملفات AFS في اللهجات المدعومة عندما يتم تنفيذ دعم نواة AFS عبر وحدات ديناميكية لا تظهر عناوينها في قائمة أسماء المتغيرات الخاصة بالنواة. في هذه الحالة، قد يضطر lsof إلى تخمين هوية ملفات AFS، وقد لا يكون قادرًا على الحصول على معلومات حول وحدة التخزين من النواة والتي تكون مطلوبة لحساب أرقام عقد AFS. عندما لا يتمكن lsof من حساب أرقام عقد وحدة التخزين، فإنه يعرض قيمة فارغة في عمود NODE.
الخيار -A A متاح في بعض تطبيقات lsof لتحديد ملف قائمة الأسماء حيث يمكن العثور على عناوين النواة الخاصة بالوحدات الديناميكية. عندما يكون هذا الخيار متاحًا، فسيتم عرضه في إخراج تعليمات lsof، والذي يتم عرضه استجابةً للخيارين -h أو -؟.
راجع قسم الأسئلة الشائعة في lsof (يحدد قسم الأسئلة الشائعة موقعه) للحصول على مزيد من المعلومات حول الوحدات الديناميكية ورموزها وكيف تؤثر على خيارات lsof.
نظرًا لأن عمليات البحث عن مسارات AFS لا يبدو أنها تشارك في عمليات التخزين المؤقت للأسماء الخاصة بالنواة، فلا يمكن لـ lsof تحديد مكونات اسم المسار لملفات AFS.
الأمان
يحتوي Lsof على ثلاثة ميزات قد تثير مخاوف أمنية. أولاً، يسمح وضع التجميع الافتراضي لأي شخص بإدراج جميع الملفات المفتوحة باستخدام lsof. ثانيًا، افتراضيًا، فإنه ينشئ ملف ذاكرة تخزين مؤقت قابلاً للقراءة والكتابة بواسطة المستخدم في الدليل الرئيسي لمعرف المستخدم الحقيقي الذي يقوم بتشغيل lsof. (يمكن تعطيل ميزتي "إدراج جميع الملفات المفتوحة" و "ملف ذاكرة التخزين المؤقت للأجهزة" عند تجميع lsof).
ثالثًا، يحدد خيارا -k و -m أسماء بديلة لقائمة أسماء النواة أو ملفات الذاكرة.
يتم التحكم في تقييد إدراج جميع الملفات المفتوحة بواسطة خيارات التجميع HASSECURITY و HASNOSOCKSECURITY. عندما يتم تحديد HASSECURITY، سيسمح lsof فقط لمستخدم الجذر بإدراج جميع الملفات المفتوحة. يمكن للمستخدم غير الجذر إدراج الملفات المفتوحة للعمليات التي يكون لها نفس رقم تعريف المستخدم الخاص بمعرف المستخدم الحقيقي لعملية lsof (الذي قام بتسجيل الدخول به).
ومع ذلك، إذا تم تعريف كل من HASSECURITY و HASNOSOCKSECURITY، يمكن لأي شخص إدراج ملفات المقبس المفتوحة، شريطة أن يتم تحديدها باستخدام الخيار -i.
عندما لا يتم تعريف HASSECURITY، يمكن لأي شخص إدراج جميع الملفات المفتوحة.
يعرض إخراج المساعدة، الذي يتم تقديمه استجابةً للخيار -h أو -؟، حالة تعريفات HASSECURITY و HASNOSOCKSECURITY.
راجع قسم "الأمان" في ملف 00README الخاص بتوزيعة lsof للحصول على معلومات حول كيفية بناء lsof مع تمكين خيارات HASSECURITY و HASNOSOCKSECURITY.
يتم التحكم في إنشاء واستخدام ملف ذاكرة التخزين المؤقت القابلة للقراءة والكتابة بواسطة المستخدم من خلال خيار وقت التجميع HASDCACHE. راجع قسم "ملف ذاكرة التخزين المؤقت للجهاز" والأقسام التي تليه للحصول على تفاصيل حول كيفية تشكيل مساره. لأسباب تتعلق بالأمان، من المهم ملاحظة أنه في توزيعة lsof الافتراضية، إذا كان معرف المستخدم الحقيقي الذي يتم تنفيذ lsof تحته هو المستخدم الجذر، فسيتم كتابة ملف ذاكرة التخزين المؤقت للجهاز في دليل المستخدم الجذر - على سبيل المثال، / أو /root. عندما لا يتم تعريف HASDCACHE، لا يقوم lsof بكتابة أو محاولة قراءة ملف ذاكرة التخزين المؤقت للجهاز.
عندما يتم تعريف HASDCACHE، سيوفر إخراج المساعدة لـ lsof، والذي يتم تقديمه استجابةً للخيار -h أو -D؟ أو -؟، معلومات حول معالجة ملف ذاكرة التخزين المؤقت للجهاز. عندما لا يتم تعريف HASDCACHE، لن يحتوي إخراج -h أو -؟ على وصف خيار -D.
قبل أن تقرر تعطيل ميزة ملف ذاكرة التخزين المؤقت للجهاز - فإن تمكينها يحسن أداء lsof عن طريق تقليل النفقات العامة لبدء فحص جميع العقد الموجودة في /dev أو /devices - اقرأ المناقشة حولها في ملف 00DCACHE الخاص بتوزيعة lsof وفي الأسئلة الشائعة لـ lsof (يعطي قسم الأسئلة الشائعة موقعه).
عندما يقوم مستخدم lsof بتحديد قائمة بديلة لأسماء النواة أو ملفات الذاكرة باستخدام الخيارين -k و -m، يتحقق lsof من صلاحية المستخدم لقراءتها باستخدام access(2). يهدف هذا إلى منع أي قوة خاصة قد تمنحها أوضاع lsof له من قراءة الملفات التي لا يمكن الوصول إليها عادةً من خلال صلاحيات معرف المستخدم الحقيقي.
الإخراج
يصف هذا القسم المعلومات التي يعرضها lsof لكل ملف مفتوح. راجع قسم "الإخراج للبرامج الأخرى" للحصول على معلومات إضافية حول الإخراج الذي يمكن معالجته بواسطة برنامج آخر.
يعرض lsof فقط أحرف 8 بت قابلة للطباعة (يتم الإعلان عنها على أنها كذلك بواسطة isprint(3)). تتم طباعة الأحرف غير القابلة للطباعة بأحد الأشكال الثلاثة: نموذج C \`[bfrnt]'; أو نموذج حرف التحكم^(على سبيل المثال،^@); أو نموذج سداسي عشري يبدأ بـ\x(على سبيل المثال،\xab). المساحة غير قابلة للطباعة في عمودCOMMAND(\x20`) وقابلة للطباعة في أماكن أخرى.
بالنسبة لبعض اللهجات - إذا تم تعريف HASSETLOCALE في ملف الرأس machine.h الخاص باللغة - فسيقوم lsof بطباعة الأحرف ذات 8 بت الممتدة للغة محلية. يجب تزويد عملية lsof بمتغير بيئة للغة محلية (على سبيل المثال، LANG) والتي يمثل قيمتها لغة محلية معروفة يتم فيها اعتبار الأحرف الممتدة قابلة للطباعة بواسطة isprint(3). وإلا، يعتبر lsof الأحرف الممتدة غير قابلة للطباعة ويطبعها وفقًا لقواعده الخاصة بالأحرف غير القابلة للطباعة، المذكورة أعلاه. راجع صفحة دليل setlocale(3) الخاصة باللغة للحصول على أسماء متغيرات بيئة أخرى يمكن استخدامها بدلاً من LANG - على سبيل المثال، LC_ALL أو LC_CTYPE وما إلى ذلك.
دعم لغة لـ Lsof لأي لهجة يغطي أيضًا الأحرف ذات العرض الكبير - على سبيل المثال، UTF-8 - عندما يتم تعريف HASSETLOCALE و HASWIDECHAR في ملف الرأس machine.h الخاص باللهجة، وعندما يتم تعريف لغة مناسبة في متغير البيئة المناسب لعملية Lsof. تكون الأحرف ذات العرض الكبير قابلة للطباعة في ظل هذه الظروف إذا أبلغت عنها الدالة iswprint(3) على أنها كذلك.
إذا لم يتم تعريف HASSETLOCALE أو HASWIDECHAR أو لغة مناسبة، أو إذا أبلغت الدالة iswprint(3) عن أحرف ذات عرض كبير ليست قابلة للطباعة، فإن Lsof يعتبر الأحرف ذات العرض الكبير غير قابلة للطباعة ويطبع كل بت من بتاتها الثمانية وفقًا لقواعدها الخاصة بالأحرف غير القابلة للطباعة، كما هو مذكور أعلاه.
راجع إجابات الأسئلة المتعلقة بـ "دعم لغة" في الأسئلة الشائعة لـ Lsof (يعطي قسم الأسئلة الشائعة موقعه) للحصول على مزيد من المعلومات.
يقوم Lsof بتغيير حجم أعمدة الإخراج ديناميكيًا في كل مرة يتم تشغيله، مما يضمن أن يكون لكل عمود الحد الأدنى من الحجم. كما يضمن أيضًا أن يكون كل عمود مفصولًا عن العمود الذي يسبقه بمسافة واحدة على الأقل.
`COMMAND` يحتوي على أول تسعة أحرف من اسم أمر UNIX المرتبط بالعملية. إذا تم تحديد قيمة غير صفرية لـ `w` في الخيار `+c w`، فإن العمود يحتوي على أول `w` من الأحرف من اسم أمر UNIX المرتبط بالعملية، وصولًا إلى الحد الأقصى من الأحرف التي يوفرها نظام UNIX لـ Lsof. (راجع وصف الأمر `+c w` أو الأسئلة الشائعة لـ Lsof للحصول على مزيد من المعلومات. يعطي قسم الأسئلة الشائعة موقعه.)
إذا كانت w أقل من طول عنوان العمود، "COMMAND"، فسيتم زيادتها إلى هذا الطول.
إذا تم تحديد قيمة صفرية لـ w في الخيار +c w، فإن العمود يحتوي على جميع أحرف اسم أمر UNIX المرتبط بالعملية.
يتم عرض جميع أحرف اسم الأمر التي تحتفظ بها النواة في هياكلها في إخراج الحقل عند تحديد واصف اسم الأمر (c). راجع قسم "إخراج للعمليات الأخرى" للحصول على معلومات حول تحديد إخراج الحقل وواصف اسم الأمر المرتبط.
`PID` هو رقم تعريف العملية (Process IDentification) للعملية.
`TID` هو رقم تعريف المهمة (thread IDentification)، إذا كان دعم إعداد تقارير المهمة (thread) مدعومًا من قبل اللهجة ويتم إدراج مهمة (thread). (إذا كان إخراج المساعدة - أي، إخراج الخيارات `-h` أو `-؟` - يعرض هذا الخيار، فإن دعم إعداد تقارير المهمة (thread) مدعوم من قبل اللهجة.)
يشير عمود TID الفارغ في Linux إلى عملية - أي، ليست مهمة (thread).
TASKCMD هو اسم أمر المهمة. بشكل عام، سيكون هذا هو نفس اسم العملية المذكور في عمود COMMAND، ولكن بعض تطبيقات المهام (مثل Linux) تسمح للمهمة بتغيير اسم أمرها.
عرض عمود TASKCMD يخضع لنفس قيود الحجم الموجودة في عمود COMMAND.
ZONE هو اسم المنطقة في Solaris 10 والإصدارات الأحدث. يجب تحديد هذا العمود باستخدام الخيار -z.
SECURITY-CONTEXT هو سياق أمان SELinux. يجب تحديد هذا العمود باستخدام الخيار -Z. لاحظ أن الخيار -Z معطل عند تعطيل SELinux في نواة Linux قيد التشغيل.
PPID هو رقم تعريف العملية الأصل (Parent Process IDentification) للعملية. يتم عرضه فقط عند تحديد الخيار -R.
PGID هو رقم تعريف مجموعة العمليات (process group IDentification) المرتبط بالعملية. يتم عرضه فقط عند تحديد الخيار -g.
USER هو رقم تعريف المستخدم أو اسم تسجيل الدخول للمستخدم الذي تنتمي إليه العملية، وعادة ما يكون هو نفسه ما يتم عرضه بواسطة [ps]({filename}../../ps)(1). ومع ذلك، في Linux، USER هو رقم تعريف المستخدم أو اسم تسجيل الدخول الذي يمتلك الدليل في /proc حيث يعثر lsof على معلومات حول العملية. عادةً ما تكون هذه هي نفس القيمة التي يتم الإبلاغ عنها بواسطة [ps]({filename}../../ps)(1)، ولكن قد تختلف عندما تقوم العملية بتغيير مُعرّف المستخدم الفعال الخاص بها. (راجع وصف الخيار -l للحصول على معلومات حول متى يتم عرض رقم تعريف المستخدم أو اسم تسجيل الدخول).
FD هو رقم واصف الملف (File Descriptor) للملف أو:
cwd: الدليل الحالي للعمل.
Lnn: مراجع المكتبة (AIX).
ctty: جهاز طرفي (character tty).
DEL: ملف محذوف.
err: خطأ في معلومات FD (راجع عمود NAME).
fp.: Fileport (Darwin).
jld: دليل jail (FreeBSD).
ltx: نص مكتبة مشتركة (كود وبيانات).
Mxx: رقم نوع الذاكرة المعروض بصيغة ست عشرية xx.
m86: ملف DOS Merge معروض.
mem: ملف معروض في الذاكرة.
mmap: جهاز معروض في الذاكرة.
NOFD: دليل Linux /proc/
يتبع FD أحد هذه الأحرف، الذي يصف الوضع الذي تم فتح الملف به:
r: للوصول للقراءة.
w: للوصول للكتابة.
u: للوصول للقراءة والكتابة.
مسافة: إذا كان الوضع غير معروف ولا يوجد قفل.
حرف يتبع.
`-`: إذا كان الوضع غير معروف ويوجد قفل.
حرف يتبع.
يتبع حرف الوضع أحد أحرف القفل هذه، التي تصف نوع القفل المطبق على الملف:
N: لقفل Solaris NFS من نوع غير معروف.
r: لقفل قراءة على جزء من الملف.
R: لقفل قراءة على الملف بأكمله.
w: لقفل كتابة على جزء من الملف.
W: لقفل كتابة على الملف بأكمله.
u: لقفل قراءة وكتابة لأي طول.
U: لقفل من نوع غير معروف.
x: لقفل SCO OpenServer Xenix على جزء من الملف.
X: لقفل SCO OpenServer Xenix على الملف بأكمله.
مسافة: إذا لم يكن هناك قفل.
راجع قسم "LOCKS" لمزيد من المعلومات حول حرف معلومات القفل.
تُشكّل محتويات عمود FD حقلًا واحدًا للتحليل في البرامج النصية للمعالجة اللاحقة. الأرقام في FD الأكبر من 9999 يتم اختصارها إلى علامة "*" متبوعة بثلاثة أرقام الأخيرة. على سبيل المثال، يظهر 10001 كـ "*001".
TYPE هو نوع العقدة المرتبطة بالملف - على سبيل المثال، VDIR أو VREG، إلخ.
أو "ax25" لمقبس Linux AX.25؛
أو "a_inode" لعقدة i مجهولة؛
أو "icmp" لمقبس ICMP؛
أو "inet" لمقبس مجال الإنترنت؛
أو "ipx" لمقبس IPX؛
أو "key" لمقبس إدارة المفاتيح الداخلي؛
أو "lla" لملف وصول مستوى الارتباط من HP-UX؛
أو "ndrv" لمقبس برنامج تشغيل الشبكة؛
أو "netlink" لمقبس netlink؛
أو "pack" لمقبس الحزم؛
أو "ppp" لمقبس PPP؛
أو "raw" لمقبس خام؛
أو "raw6" لمقبس خام IPv6؛
أو "rte" لمقبس AF_ROUTE؛
أو "sock" لمقبس ذي مجال غير معروف؛
أو "systm" لمقبس النظام؛
أو "unix" لمقبس مجال UNIX؛
أو "x.25" لمقبس x.25 من HP-UX؛
أو "ATALK" لمقبس AppleTalk؛
أو "BLK" لملف جهاز كتلة؛
أو "CHR" لملف جهاز حرفي؛
أو "DEL" لملف خريطة Linux الذي تم حذفه؛
أو "DIR" لدليل؛
أو "DOOR" لملف VDOOR؛
أو "EVENTFD" لـ eventfd؛
أو "FIFO" لملف جهاز FIFO؛
أو "FSEVENTS" لـ fsevents؛
أو "IPv4" لمقبس IPv4؛
أو "IPv6" لملف شبكة IPv6 مفتوح - حتى إذا كان عنوانه IPv4، يتم تعيينه في عنوان IPv6؛
أو "KQUEUE" لملف قائمة انتظار أحداث kernel بأسلوب BSD؛
أو "LINK" لملف ارتباط رمزي؛
أو "MPB" لملف كتلة متعددة؛
أو "MPC" لملف حرفي متعدد؛
أو "PAS" لملف /proc/as؛
أو "PAXV" لملف /proc/auxv؛
أو "PCRE" لملف /proc/cred؛
أو "PCTL" لملف تحكم /proc؛
أو "PCUR" لعملية /proc الحالية؛
أو "PCWD" للدليل الحالي /proc؛
أو "PDIR" لدليل /proc؛
أو "PETY" لنوع /proc القابل للتنفيذ (etype)؛
أو "PFD" لملف واصف ملف /proc؛
أو "PFDR" لدليل واصف ملف /proc؛
أو "PFIL" لملف قابل للتنفيذ /proc؛
أو "PFPR" لمجموعة تسجيل FP لـ /proc؛
أو "PGD" لملف /proc/pagedata؛
أو "PGID" لملف إعلام المجموعة /proc؛
أو "PIPE" للأنابيب؛
أو "PLC" لملف /proc/lwpctl؛
أو "PLDR" لدليل /proc/lpw؛
أو "PLDT" لملف /proc/ldt؛
أو "PLPI" لملف /proc/lpsinfo؛
أو "PLST" لملف /proc/lstatus؛
أو "PLU" لملف /proc/lusage؛
أو "PLWG" لملف /proc/gwindows؛
أو "PLWI" لملف /proc/lwpsinfo؛
أو "PLWS" لملف /proc/lwpstatus؛
أو "PLWU" لملف /proc/lwpusage؛
أو "PLWX" لملف /proc/xregs؛
أو "PMAP" لملف خريطة /proc (map)؛
أو "PMPS" لملف /proc/maps؛
أو "PMEM" لملف صورة ذاكرة /proc؛
أو "PNTF" لملف إشعارات العمليات في /proc؛
أو "POBJ" لملف الكائنات في /proc؛
أو "PODR" لدليل الكائنات في /proc؛
أو "POLP" لملف العمليات الخفيفة الوزن القديمة في /proc؛
أو "POPF" لملف معرف العمليات القديم في /proc؛
أو "POPG" لملف بيانات الصفحة القديم في /proc؛
أو "PORT" لأنابيب SYSV المسماة؛
أو "PREG" لملف التسجيل في /proc؛
أو "PRMP" لملف الخريطة في /proc؛
أو "PROCDSC" لوصف المعالج؛
أو "PRTD" لدليل الجذر في /proc؛
أو "PSGA" لملف إجراءات الإشارة في /proc؛
أو "PSIN" لملف معلومات العملية في /proc؛
أو "PSTA" لملف الحالة في /proc؛
أو "PSXMQ" لملف قائمة انتظار الرسائل POSIX؛
أو "PSXSEM" لملف السيمفور POSIX؛
أو "PSXSHM" لملف الذاكرة المشتركة POSIX؛
أو "PTS" لملف /dev/pts؛
أو "PUSG" لملف الاستخدام في /proc؛
أو "PW" لملف المراقبة في /proc؛
أو "PXMP" لملف الخريطة في /proc؛
أو "REG" لملف عادي؛
أو "SHM" لملف الذاكرة المشتركة؛
أو "SMT" لملف نقل الذاكرة المشتركة؛
أو "STR" للتدفقات؛
أو "STSO" لمقبس تدفق؛
أو "UNKN" لملف غير معروف؛
أو "UNKNcwd" لدليل العمل الحالي غير المعروف؛
أو "UNKNdel" لملف محذوف غير معروف؛
أو "UNKNfd" لوصف ملف غير معروف؛
أو "UNKNmem" لملف مُعيّن في الذاكرة غير معروف؛
أو "UNKNrtd" لدليل الجذر غير المعروف؛
أو "UNKNtxt" لنص البرنامج غير المعروف؛
أو "UNNM" لنوع ملف غير مُسمى؛
أو "XNAM" لملف خاص من نوع OpenServer Xenix غير معروف؛
أو "XSEM" لملف سيمفور OpenServer Xenix؛
أو "XSD" لملف بيانات مشتركة من OpenServer Xenix؛
أو "UNSP" لملف غير مدعوم؛
أو الأربعة بايتات من رقم النوع إذا كان الاسم المقابل غير معروف.
يحتوي FILE-ADDR على عنوان بنية الملف في النواة عندما تم تحديد f مع +f؛
يحتوي FCT على عدد المراجع للملف من بنية الملف في النواة عندما تم تحديد c مع +f؛
عند تحديد g أو G مع +f، يحتوي FILE-FLAG على محتويات العضو f_flag[s] من بنية الملف في النواة وأعلام فتح الملفات لكل عملية في النواة (إذا كانت متوفرة)؛ يتسبب 'G' في عرضها بتنسيق ست عشري؛ 'g'، كأختصارات. يمكن عرض قائمتين مفصولتين بفاصلات، والقوائم مفصولة بفاصلة منقوطة (;)، تحتوي القائمة الأولى على اختصارات لقيم f_flag[s] من الجدول التالي:
AIO: إدخال/إخراج غير متزامن (على سبيل المثال، FAIO)
AP: إلحاق
ASYN: إدخال/إخراج غير متزامن (على سبيل المثال، FASYNC)
BAS: تم استخدام كتلة الاختبار والتعيين
BKIU: كتلة إذا كانت قيد الاستخدام
BL: استخدم إزاحات الكتلة
BSK: كتلة البحث
CA: تجنب النسخ
CIO: إدخال/إخراج متزامن
CLON: استنساخ
CLRD: قراءة CL
CR: إنشاء
DF: تأخير
DFI: تأخير IND
DFLU: تنظيف البيانات
DIR: مباشر
DLY: تأخير
DOCL: قم بالاستنساخ
DSYN: سلامة البيانات فقط
DTY: يجب أن يكون دليلاً
EVO: حدث فقط
EX: فتح للتنفيذ
EXCL: فتح حصري
FSYN: كتابة متزامنة
GCDF: التأخير أثناء unp_gc() (AIX)
GCMK: علامة أثناء unp_gc() (AIX)
GTTY: تم الوصول إليه عبر /dev/tty
HUP: HUP قيد التقدم
KERN: نواة
KIOC: إدخال/إخراج تم إصداره بواسطة النواة
LCK: لديه قفل
LG: ملف كبير
MBLK: كتلة رسائل التدفق
MK: علامة
MNT: تحميل
MSYN: تزامن متعدد
NATM: لا تقم بتحديث وقت الوصول
NB: إدخال/إخراج غير حظر
NBDR: لا يوجد فحص BDRM
NBIO: إدخال/إخراج غير حظر SYSV
NBF: التخزين المؤقت N في مكانه
NC: لا يوجد ذاكرة تخزين مؤقت
ND: لا يوجد تأخير
NDSY: لا يوجد تزامن بيانات
NET: شبكة
NFLK: لا تتبع الروابط
NMFS: نظام ملفات NM
NOTO: تعطيل الإيقاف في الخلفية
NSH: لا يوجد مشاركة
NTTY: لا يوجد TTY تحكم
OLRM: مرآة OLR
PAIO: إدخال/إخراج غير متزامن POSIX
PATH: مسار
PP: أنبوب POSIX
R: قراءة
RC: ذاكرة تخزين مؤقت للقفل على الملف والسجلات
REV: تم إبطاله
RSH: قراءة مشتركة
RSYN: تزامن القراءة
RW: وصول للقراءة والكتابة
SL: قفل مشترك
SNAP: لقطة مطبوخة
SOCK: مقبس
SQSH: مجموعة Sequent مشتركة عند الفتح
SQSV: مجموعة Sequent SVM عند الفتح
SQR: إصلاح مجموعة Sequent عند الفتح
SQS1: فتح Sequent كامل مشترك
SQS2: فتح Sequent جزئي مشترك
STPI: إيقاف الإدخال/الإخراج
SWR: قراءة متزامنة
SYN: سلامة الملف أثناء الكتابة
TCPM: تجنب تصادم TCP
TMPF: ملف مؤقت
TR: اقتطاع
W: كتابة
WKUP: تزامن الإدخال/الإخراج المتوازي
WTG: تزامن الإدخال/الإخراج المتوازي
VH: vhangup قيد الانتظار
VTXT: نص افتراضي
XL: قفل حصري
تم استخلاص هذه القائمة من الأسماء من تعريفات F* #define في ملفات الرأس الخاصة باللهجة <fcntl.h>، و <linux/fs.h>، و <sys/fcntl.c>، و <sys/fcntlcom.h>، و <sys/file.h>؛ راجع ملف الرأس common.h للحصول على قائمة توضح العلاقة بين الأسماء المختصرة المذكورة أعلاه وتعريفات ملف الرأس؛
قد تحتوي القائمة الثانية (بعد الفاصلة المنقوطة) على أسماء مختصرة لعلامات ملفات النظام لكل عملية من الجدول التالي:
ALLC تم تخصيصها
BR تم قراءة الملف
BHUP تم إيقاف النشاط بواسطة إشارة SIGHUP
BW تمت الكتابة في الملف
CLSG يتم الإغلاق
CX إغلاق عند التنفيذ (راجع fcntl(F_SETFD))
LCK تم تطبيق القفل
MP تم تعيينها في الذاكرة
OPIP قيد المعالجة - في طور التقدم
RSVW انتظار محجوز
SHMT تم تعيين UF_FSHMAT (AIX)
USE في الاستخدام (متعدد الخيوط)
NODE-ID (أو INODE-ADDR لبعض اللهجات) يحتوي على معرف فريد لعقدة الملف (عادةً ما يكون عنوان عقدة النظام أو عنوان inode، ولكن في بعض الأحيان يكون عبارة عن سلسلة من أرقام الجهاز والعقدة) عندما يتم تحديد n مع +f؛
DEVICE يحتوي على أرقام الأجهزة، مفصولة بفواصل، لملف خاص بالحروف، أو ملف خاص بالكتل، أو ملف عادي، أو دليل، أو ملف NFS؛
أو "ذاكرة" لنظام ملفات الذاكرة في Tru64 UNIX؛
أو عنوان منطقة البيانات الخاصة لمجرى مقبس Solaris؛
أو عنوان مرجعي للنظام يحدد الملف (قد يتم استخدام العنوان المرجعي للنظام لملفات FIFO، على سبيل المثال)؛
أو عنوان الأساس أو اسم الجهاز لمقبس Linux AX.25.
عادةً، يتم عرض أقل من 32 بت فقط من عناوين نواة Tru64 UNIX.
SIZE، SIZE/OFF، أو OFFSET
هو حجم الملف أو إزاحة الملف بالبايت. يتم عرض قيمة في هذا العمود فقط إذا كانت متاحة. يعرض lsof القيمة المناسبة لنوع الملف وإصدار lsof - سواء كان حجمًا أو إزاحة.
في بعض لهجات UNIX، لا يمكن لـ lsof الحصول على معلومات دقيقة أو متسقة لإزاحة الملف من مصادر البيانات الخاصة بالنواة، وأحيانًا فقط لأنواع معينة من الملفات (مثل ملفات المقبس). في حالات أخرى، لا تحتوي الملفات على أحجام حقيقية - على سبيل المثال، المقابس، و FIFOs، والأنابيب - لذلك يعرض lsof لأحجامها كميات المحتوى التي يجدها في واصفات التخزين المؤقت للنواة (على سبيل المثال، أحجام التخزين المؤقت للمقبس أو أحجام نافذة TCP/IP). راجع قسم الأسئلة الشائعة في lsof (يحدد القسم موقعه) لمزيد من المعلومات.
يتم عرض حجم الملف في شكل عشري؛ يتم عرض الإزاحة عادةً في شكل عشري مع بادئة "0t" إذا كانت تحتوي على 8 أرقام أو أقل؛ في شكل سداسي عشري مع بادئة "0x" إذا كانت أطول من 8 أرقام. (راجع وصف الخيار -o o للحصول على معلومات حول متى قد يكون 8 هو القيمة الافتراضية لقيمة أخرى).
وبالتالي، تحدد البادئتان "0t" و "0x" إزاحة عندما قد يحتوي العمود على كل من حجم وإزاحة (أي أن عنوانه هو SIZE/OFF).
إذا تم تحديد الخيار -o، فإن lsof يعرض دائمًا إزاحة الملف (أو لا شيء إذا لم تكن الإزاحة متاحة) ويضع علامة على العمود باسم OFFSET. تبدأ الإزاحة دائمًا بـ "0t" أو "0x" كما هو موضح أعلاه.
يمكن لمستخدم lsof التحكم في التبديل من "0t" إلى "0x" باستخدام الخيار -o o. راجع وصفه للحصول على مزيد من المعلومات.
إذا تم تحديد الخيار -s، فإن lsof يعرض دائمًا حجم الملف (أو لا شيء إذا لم يكن الحجم متاحًا) ويضع علامة على العمود باسم SIZE. الخياران -o و -s حصريان؛ لا يمكن تحديدهما معًا.
إذا تم تحديد الخيار -H، يعرض lsof حجم الملف بتنسيق قابل للقراءة بواسطة الإنسان.
بالنسبة للملفات التي ليس لها حجم ثابت - على سبيل المثال، لا توجد على جهاز قرص - سيعرض lsof معلومات مناسبة حول الحجم الحالي أو موضع الملف إذا كانت متاحة في هياكل النواة التي تحدد الملف.
NLINK يحتوي على عدد روابط الملف عند تحديد +L؛
NODE هو رقم العقدة للملف المحلي؛
أو رقم inode لملف NFS في المضيف الخادم؛
أو نوع بروتوكول الإنترنت - على سبيل المثال، "TCP"؛
أو "STR" للدفق؛
أو "CCITT" لمقبس HP-UX x.25؛
أو IRQ أو رقم inode لجهاز مقبس Linux AX.25.
NAME هو اسم نقطة التحميل ونظام الملفات الذي يوجد عليه الملف؛
أو اسم الملف المحدد في خيار الأسماء (بعد حل أي روابط رمزية)؛
أو اسم جهاز خاص أو جهاز كتلة؛
أو العناوين المحلية والبعيدة للشبكة للملف الشبكي؛ يتبع اسم المضيف المحلي أو رقم IP بنقطتين (:)، والمنفذ، و "->"، والعنوان البعيد المكون من جزأين؛ يمكن الإبلاغ عن عناوين IP كأرقام أو أسماء، اعتمادًا على الخيارات +|-M، و -n، و -P؛ يتم تضمين أرقام IPv6 المفصولة بنقطتين في أقواس مربعة؛ يتم تمثيل عناوين IPv4 INADDR_ANY وعناوين IPv6 IN6_IS_ADDR_UNSPECIFIED، وأرقام المنافذ الصفرية بعلامة النجمة (*); قد يتبع عنوان وجهة UDP مقدار الوقت الذي انقضى منذ إرسال آخر حزمة إلى الوجهة؛ قد يتبع عناوين TCP و UDP و UDPLITE عن بُعد معلومات TCP/TPI بين قوسين - الحالة (على سبيل المثال، "ESTABLISHED"، "Unbound")، وأحجام قائمة الانتظار، وأحجام النافذة (ليست جميع اللهجات) - بطريقة مماثلة لما يبلغه [netstat] ({filename}../../netstat)(1)؛ راجع وصف الخيار -T أو وصف حقل TCP/TPI في OUTPUT FOR OTHER PROGRAMS لمزيد من المعلومات حول الحالة وحجم قائمة الانتظار وحجم النافذة؛
أو عنوان أو اسم مقبس مجال يونكس، مع إمكانية تضمين اسم جهاز استنساخ التدفق، واسم مسار كائن نظام الملفات، وعناوين النواة المحلية والخارجية،
معلومات حول زوج المقبس، وعنوان vnode المرتبط؛
أو أسماء نقاط التحميل المحلية والبعيدة لملف NFS؛
أو `STR`، متبوعًا باسم التدفق؛
أو اسم جهاز تدفق الأحرف، متبوعًا بـ `->` واسم التدفق أو قائمة بأسماء وحدات التدفق، مفصولة بـ `->`؛
أو `STR:`، متبوعًا بأسماء أجهزة وموديولات تدفق SCO OpenServer، مفصولة بـ `->`؛
أو اسم دليل النظام، ` -- `، ثم أكبر عدد ممكن من مكونات اسم المسار الذي يمكن لـ lsof العثور عليه في ذاكرة التخزين المؤقت للأسماء في النواة للأنواع المحددة (راجع قسم "ذاكرة التخزين المؤقت لأسماء النواة" لمزيد من المعلومات)؛
أو `PIPE->`، متبوعًا بعنوان وجهة الأنبوب في نواة Solaris؛
أو `COMMON:`، متبوعًا باسم الجهاز لهيكل معلومات جهاز vnode الشائع في Solaris؛
أو عائلة العناوين، متبوعة بشرطة مائلة (`/`)، متبوعة بأربعة عشر بايتًا مفصولة بفواصل من عنوان مقبس خام غير متصل بالإنترنت؛
أو عنوان X.25 المحلي الخاص بنظام HP-UX، متبوعًا برقم الاتصال الظاهري (إذا وجد)، متبوعًا بالعنوان البعيد (إذا وجد)؛
أو `(dead)` للملفات المفصولة في نظام Tru64 UNIX - عادةً ملفات طرفية تم وضع علامة عليها باستخدام ioctl `TIOCNOTTY` وأغلقها الخوادم؛
أو `rd=<offset>` و `wr=<offset>` لقيم إزاحات القراءة والكتابة لـ FIFO؛
أو `clone n:/dev/event` لاستنساخات ملفات جهاز `/dev/event` في نظام SCO OpenServer، حيث n هو رقم الجهاز الثانوي للملف؛
أو `(socketpair: n)` لمقبس مجال يونكس في Solaris 2.6 أو 8 أو 9 أو 10، تم إنشاؤه بواسطة وظيفة الشبكة `socketpair(3N)`؛
أو `no PCB` للملفات المقبس التي ليس لديها كتلة بروتوكول مرتبطة بها، متبوعة اختياريًا بـ `، CANTSENDMORE` إذا تم تعطيل الإرسال على المقبس، أو `، CANTRCVMORE` إذا تم تعطيل الاستقبال على المقبس (على سبيل المثال، بواسطة وظيفة [shutdown]({filename}../../shutdown)(2))؛
أو العناوين المحلية والبعيدة لمقبس IPX الخاص بنظام Linux في شكل
<net>:[<node>:]<port>، متبوعًا بين قوسين بأحجام قوائم الإرسال والاستقبال وحالة الاتصال؛
أو "dgram" أو "stream" لنوع مقابس مجال UNIX داخل النواة لنظام UnixWare 7.1.1 والإصدارات الأحدث، متبوعًا بنقطتين (:) واسم المسار المحلي المتاح، متبوعًا بـ "->" واسم المسار البعيد أو عنوان مقبس النواة بتنسيق سداسي عشري عندما يكون متاحًا؛
أو قيمة الارتباط، وفهرس الارتباط، وقيمة نقطة النهاية، والعنوان المحلي، والمنفذ المحلي، والعنوان البعيد، والمنفذ البعيد لمقابس SCTP الخاصة بنظام Linux؛
أو "protocol: " متبوعًا بسمة البروتوكول الخاصة بمقبس Linux.
بالنسبة للأنظمة التي تدعم نظام ملفات "namefs"، مما يسمح بربط ملف بملف آخر باستخدام fattach(3C)، ستضيف lsof "(FA:<address1><direction><address2>)" إلى عمود NAME. <address1> و <address2> هما عناوين vnode بتنسيق سداسي عشري. سيكون <direction> هو "<-" إذا تم ربط <address2> بهذا vnode الذي عنوانه <address1>؛ و "->" إذا تم ربط <address1>، عنوان vnode لهذا vnode، بـ <address2>. يمكن حذف <address1> إذا كان يظهر بالفعل في عمود DEVICE.
قد تضيف lsof ملاحظتين بين قوسين إلى عمود NAME للملفات المفتوحة في نظام Solaris 10: "(?)" إذا اعتبرت lsof أن اسم المسار غير دقيق؛ و "(deleted)" إذا تم تحديد خيار -X واكتشفت lsof أن اسم مسار الملف المفتوح قد تم حذفه. راجع قسم الأسئلة الشائعة في lsof (يوضح قسم الأسئلة الشائعة موقعه) للحصول على مزيد من المعلومات حول هذه الإضافات إلى عمود NAME.
الأقفال
لا يمكن لـ lsof الإبلاغ بشكل كاف عن مجموعة واسعة من أقفال الملفات الخاصة بأنظمة UNIX المختلفة في حرف واحد. ما يتم الإبلاغ عنه في حرف واحد هو حل وسط بين المعلومات التي يتم العثور عليها في النواة وقيود تنسيق الإبلاغ.
علاوة على ذلك، عندما يمتلك البرنامج عمليات متعددة لأقفال على مستوى البايت على ملف، يبلغ lsof فقط عن حالة القفل الأول الذي يصادفه. إذا كان هذا قفلًا على مستوى البايت، فسيتم الإبلاغ عن حرف القفل بأحرف صغيرة - أي 'r' أو 'w' أو 'x' - بدلاً من الحرف الكبير المكافئ الذي يتم الإبلاغ عنه لقفل الملف الكامل.
بشكل عام، يمكن لـ lsof الإبلاغ فقط عن الأقفال التي تحتفظ بها العمليات المحلية على الملفات المحلية. عندما تضع عملية محلية قفلًا على ملف مثبت عن بُعد (مثل NFS)، عادةً ما يسجل خادم الاستضافة عن بُعد حالة القفل. أحد الاستثناءات هو Solaris - في بعض مستويات التصحيح لـ 2.3، وفي جميع الإصدارات الأحدث من 2.4، تسجل نواة Solaris معلومات حول الأقفال عن بُعد في الهياكل المحلية.
يواجه lsof صعوبة في الإبلاغ عن الأقفال لبعض أنظمة UNIX. راجع قسم الأخطاء في صفحة الدليل هذه أو قسم الأسئلة الشائعة في lsof (يوضح قسم الأسئلة الشائعة موقعه) للحصول على مزيد من المعلومات.
الإخراج للبرامج الأخرى
عند تحديد خيار -F، ينتج lsof إخراجًا مناسبًا للمعالجة بواسطة برنامج آخر - على سبيل المثال، برنامج awk أو Perl، أو برنامج C.
يتم إخراج كل وحدة من المعلومات في حقل يتم تحديده بحرف بادئ وينتهي بـ NL (012) (أو NUL (000) إذا تم تحديد حرف محدد الحقل 0 (صفر)). تتبع بيانات الحقل مباشرةً بعد حرف تعريف الحقل وتمتد إلى مُنهي الحقل.
يمكن اعتبار إخراج الحقول كمجموعات عمليات ومجموعات ملفات. تبدأ مجموعة العمليات بحقل يكون معرفه هو p (لـ PID - معرف العملية). وتمتد إلى بداية حقل PID التالي أو بداية مجموعة الملفات الأولى للعملية، أيهما يأتي أولاً. تتضمن مجموعة العمليات حقولاً تحدد الأمر، ومعرف مجموعة العمليات (PGID)، ومعرف المهمة (TID)، ومعرف المستخدم (UID) أو اسم تسجيل الدخول.
تبدأ مجموعة الملفات بحقل يكون معرفه هو f (لمحدد الملف). ويليها سطور تصف وضع الوصول إلى الملف وحالته المؤقفة ونوعه وجهازه وحجمه وإزاحته ورقم i-node وبروتوكول واسم الملف وأسماء وحدة البث. وتمتد إلى بداية مجموعة الملفات أو العمليات التالية، أيهما يأتي أولاً.
عند تحديد مُنهي الحقل NUL (000) باستخدام حرف تعريف الحقل 0 (صفر)، ينهي lsof كل مجموعة من مجموعات العمليات والملفات بحرف NL (012).
ينتج lsof دائمًا حقلًا واحدًا، وهو حقل PID (p). في وضع التكرار، يتم أيضًا إنتاج العلامة (m). يمكن الإعلان عن جميع الحقول الأخرى بشكل اختياري في قائمة أحرف معرفات الحقول التي تتبع خيار -F. عندما يحدد حرف تحديد الحقل عنصرًا لا يقوم lsof بإدراجه عادةً - على سبيل المثال، PPID، المحدد باستخدام -R - يحدد تحديد الحقل أيضًا إدراج العنصر.
كان lsof من الإصدار 4.88 إلى 4.93.2 ينتج دائمًا حقلًا إضافيًا، وهو حقل محدد الملف (f). ومع ذلك، لا ينتج lsof في هذا الإصدار هذا الحقل. هذا التغيير يدعم حالة الاستخدام التي يحتاج فيها المستخدم فقط إلى حقل PID ولا يحتاج إلى حقل محدد الملف. حدد f بشكل صريح إذا كنت بحاجة إلى هذا الحقل.
من الممكن تمامًا تحديد مجموعة من الحقول التي لا يمكن تحليلها بسهولة - على سبيل المثال، إذا لم يتم تحديد حقل محدد الملف، فقد يكون من الصعب تحديد مجموعات الملفات. للمساعدة في تجنب هذه الصعوبة، يدعم lsof خيار -F؛ فهو يحدد إخراج جميع الحقول مع مُنهيات NL. يحدد زوج الخيارات -F0 إخراج جميع الحقول مع مُنهيات NUL. لأسباب تتعلق بالتوافق، لا يحدد الخياران -F أو -F0 حقل الجهاز الخام.
هذه هي الحقول التي سينتجها lsof. الحرف الوحيد المدرج أولاً هو معرف الحقل.
a وضع الوصول إلى الملف
c اسم أمر العملية (جميع الأحرف من هيكل proc أو المستخدم)
C عدد مشاركة هيكل الملف
d رمز حرف جهاز الملف
D رقم جهاز كبير/صغير (0x<سداسي عشري>)
f محدد الملف
F عنوان هيكل الملف (0x<سداسي عشري>)
G أعلام الملف (0x<سداسي عشري>؛ أسماء إذا تبعها +fg)
g معرف مجموعة العملية
i رقم i-node للملف
K معرف المهمة
k عدد الروابط
l حالة قفل الملف
L اسم تسجيل دخول العملية
m علامة بين المخرجات المتكررة (يتم تحديدها دائمًا في وضع التكرار)
M اسم أمر المهمة
n اسم الملف أو التعليق أو عنوان الإنترنت
N معرف العقدة (0x<سداسي عشري>)
o إزاحة الملف (0t<عشري> أو 0x<سداسي عشري>، انظر -o o)
p معرف العملية (يتم تحديده دائمًا)
P اسم البروتوكول
r رقم الجهاز الخام (0x<سداسي عشري>)
R معرف العملية الأصل
s حجم الملف (عشري)
S معرف البث للملف
t نوع الملف
T معلومات TCP/TPI، يتم تحديدها بواسطة البادئات (الحرف `=` هو جزء من البادئة):
QR=<حجم قائمة الانتظار للقراءة>
QS=<حجم قائمة الانتظار للإرسال>
SO=<خيارات ومقادير المقبس> (ليست جميع اللهجات)
SS=<حالات المقبس> (ليست جميع اللهجات)
ST=<حالة الاتصال>
TF=<أعلام وقيم TCP> (ليست جميع اللهجات)
WR=<حجم نافذة القراءة> (ليست جميع اللهجات)
WW=<حجم نافذة الكتابة> (ليست جميع اللهجات)
(لا يتم الإبلاغ عن معلومات TCP/TPI لجميع لهجات UNIX المدعومة. سيعرض إخراج المساعدة -h أو -؟ للخيار -T ما يمكن طلبه للإبلاغ عن TCP/TPI.)
u معرف مستخدم العملية
z اسم المنطقة في Solaris 10 والإصدارات الأحدث
Z سياق أمان SELinux (يتم تعطيله عند تعطيل SELinux)
0 استخدم حرف مُنهي الحقل NUL بدلاً من NL
19 معرفات الحقول الخاصة باللهجة (يحدد إخراج -F؟ المعلومات الموجودة في الحقول الخاصة باللهجة).
يمكنك الحصول على معلومات مساعدة عبر الإنترنت حول هذه الأحرف وأوصافها عن طريق تحديد
خيار -F?. (قم بإلغاء رمز ? كما يتطلب ذلك نظام التشغيل الخاص بك). يمكن العثور على معلومات إضافية حول
محتوى الحقل في قسم "الإخراج".
على سبيل المثال، سيحدد الخيار '-F pcfn' معرف العملية (p) واسم الأمر (c) ووصف الملف (f) واسم الملف (n) مع حرف إنهاء الحقل NL؛ سيحدد الخيار '-F pcfn0' نفس الإخراج مع حرف إنهاء الحقل NUL (000).
لا ينتج lsof جميع الحقول لكل عملية أو مجموعة ملفات، بل فقط تلك المتاحة. بعض الحقول حصرية بشكل متبادل: أحرف جهاز الملف وأرقام جهاز رئيسي/ثانوي؛ رقم عقدة الملف واسم البروتوكول؛ اسم الملف ومعرف التدفق؛ حجم الملف والإزاحة. سيظهر أحد أعضاء هذه المجموعات الحصرية في إخراج الحقل، ولكن ليس كلاهما.
عادةً ما ينهي lsof كل حقل بحرف NL (012). يمكن تحديد حرف المعرف 0 (صفر) لتغيير حرف إنهاء الحقل إلى NUL (000). قد يكون حرف إنهاء NUL أسهل في المعالجة باستخدام xargs (1)، على سبيل المثال، أو مع البرامج التي قد لا تتعامل آليات الاقتباس الخاصة بها بسهولة مع مجموعة الأحرف الموجودة في إخراج الحقل. عند استخدام حرف إنهاء الحقل NUL، ينهي lsof كل عملية ومجموعة ملفات بحرف NL (012).
يتم تضمين ثلاثة أدوات للمساعدة في إنشاء البرامج التي يمكنها معالجة إخراج حقول lsof في توزيع lsof. الأول هو ملف رأس C، lsof_fields.h، الذي يحتوي على رموز لمعرفات الحقول، وفهارس لتخزينها في جدول، وسلاسل شرح يمكن تجميعها في البرامج. يستخدم lsof ملف الرأس هذا.
المساعد الثاني هو مجموعة من البرامج النصية التي تعالج مخرجات الحقول، مكتوبة بلغة awk و Perl 4 و Perl 5. توجد هذه البرامج النصية في الدليل الفرعي "scripts" في توزيعة lsof.
المساعد الثالث هو مكتبة C المستخدمة لمجموعة اختبارات lsof. مجموعة الاختبارات مكتوبة بلغة C وتستخدم مخرجات الحقول للتحقق من التشغيل الصحيح لـ lsof. يمكن العثور على المكتبة في الملف "tests/LTlib.c" في توزيعة lsof. تستخدم المكتبة المساعد الأول، وهو ملف الرأس "lsof_fields.h".
الحظر والمهلات الزمنية
يمكن أن يتعطل lsof بسبب بعض وظائف النواة التي يستخدمها، وهي lstat(2) و readlink(2) و stat(2). تتوقف هذه الوظائف في النواة، على سبيل المثال، عندما تصبح الأجهزة التي توجد عليها أنظمة ملفات NFS التي تم تركيبها غير قابلة للوصول.
يحاول lsof كسر هذه الحالات المعلقة باستخدام المؤقتات والعمليات الفرعية، ولكن هذه التقنيات ليست موثوقة تمامًا. عندما يتمكن lsof من كسر حالة التعليق، فإنه سيعرض رسالة خطأ. يمكن إخفاء هذه الرسائل باستخدام الخيارات "-t" و "-w".
يمكن عرض القيمة الافتراضية للمهلة الزمنية باستخدام الخيار "-h" أو "-?". يمكن تغييرها باستخدام الخيار "-S [t]". الحد الأدنى لـ t هو ثانيتان، ولكن يجب تجنب القيم الصغيرة، حيث يمكن أن يتسبب بطء استجابة النظام في انتهاء المهلات الزمنية القصيرة بشكل غير متوقع وربما إيقاف lsof قبل أن يتمكن من إنتاج أي مخرجات.
عندما يتعين على lsof كسر حالة تعليق أثناء الوصول إلى معلومات نظام الملفات المثبت، فإنه يستمر بشكل طبيعي، على الرغم من أن ذلك سيؤدي إلى تقليل كمية المعلومات المتاحة للعرض حول الملفات المفتوحة.
يمكن أيضًا توجيه lsof لتجنب استخدام المؤقتات والعمليات الفرعية عند استخدام وظائف النواة التي قد تتسبب في التعليق عن طريق تحديد الخيار "-O". في حين أن هذا سيسمح لـ lsof بالبدء مع حمولة أقل، إلا أنه يعرض lsof بشكل كامل لمواقف النواة التي قد تتسبب في تعطله. استخدم هذا الخيار بحذر.
تجنب حالات تعليق النواة
يمكنك استخدام الخيار "-b" لإخبار lsof بتجنب استخدام وظائف النواة التي قد تتسبب في التعليق. تنطبق بعض الاحتياطات.
أولاً، يتطلب استخدام هذا الخيار عادةً أن يوفر نظامك أرقام أجهزة بديلة بدلاً من أرقام الأجهزة التي سيحصل عليها lsof عادةً باستخدام وظائف lstat(2) و stat(2) في النواة. راجع قسم "أرقام الأجهزة البديلة" لمزيد من المعلومات حول أرقام الأجهزة البديلة.
ثانيًا، لا يمكنك تحديد أسماء لـ lsof للبحث عنها ما لم تكن أسماء أنظمة ملفات. وذلك لأن lsof يحتاج إلى معرفة أرقام الأجهزة والعُقد للملفات المدرجة في خيارات lsof، ويمنع الخيار "-b" lsof من الحصول عليها. علاوة على ذلك، نظرًا لأن lsof لديه فقط أرقام أجهزة لأنظمة الملفات التي تحتوي على بدائل، فإن قدرته على تحديد موقع الملفات على أنظمة الملفات تعتمد تمامًا على توفر ودقة البدائل. إذا لم تكن هناك بدائل متاحة، أو إذا كانت غير صحيحة، فلن يتمكن lsof من تحديد موقع الملفات على أنظمة الملفات المسماة.
أولاً، إذا كانت أسماء أدلة نظام الملفات التي يحصل عليها lsof من جدول تركيب النظام عبارة عن روابط رمزية، فلن يتمكن lsof من حل هذه الروابط. وذلك لأن الخيار `-b` يتسبب في تجنب lsof لوظيفة `[readlink]({filename}../../readlink)(2)` الخاصة بالنواة والتي يستخدمها لحل الروابط الرمزية.
ثانياً، استخدام الخيار `-b` يتسبب في قيام lsof بإصدار رسائل تحذير عندما يحتاج إلى استخدام وظائف النواة التي يوجهه الخيار `-b` إلى تجنبها. يمكنك قمع هذه الرسائل عن طريق تحديد الخيار `-w`، ولكن إذا قمت بذلك، فلن ترى أرقام الأجهزة البديلة التي يتم الإبلاغ عنها في رسائل التحذير.
أرقام الأجهزة البديلة
في بعض الأنظمة، عندما يحتاج lsof إلى تقسيم كتلة لأنه لا يستطيع الحصول على معلومات حول نظام ملفات مُركّب عبر وظائف النواة `lstat(2)` و `[stat]({filename}../../stat)(2)`، أو لأنك حددت الخيار `-b`، يمكن لـ lsof الحصول على بعض المعلومات التي يحتاجها - رقم الجهاز وربما نوع نظام الملفات - من جدول تركيب النظام. عندما يكون ذلك ممكنًا، سيقوم lsof بالإبلاغ عن رقم الجهاز الذي حصل عليه. (يمكنك قمع هذا التقرير عن طريق تحديد الخيار `-w`).
يمكنك المساعدة في هذه العملية إذا كان جدول التركيب الخاص بك مدعومًا بملف `/etc/mtab` أو `/etc/mnttab` يحتوي على حقل خيارات عن طريق إضافة حقل `dev=xxxx` لنقاط التركيب التي لا تحتوي على هذا الحقل في سلاسل الخيارات الخاصة بها. ملاحظة: يجب أن تكون قادرًا على تعديل الملف - أي أن بعض جداول التركيب مثل Solaris الحديثة `/etc/mnttab` أو Linux `/proc/mounts` للقراءة فقط ولا يمكن تعديلها.
قد تتمكن أيضًا من توفير أرقام الأجهزة باستخدام الخيارات `+m` و `+m m`، بشرط أن يتم دعمها بواسطة نظامك. تحقق من ناتج الخيارات `-h` أو `-?` الخاصة بـ lsof لمعرفة ما إذا كانت الخيارات `+m` و `+m m` متاحة.
الجزء `xxxx` من الحقل هو القيمة الست عشرية لرقم جهاز نظام الملفات. (راجع حقل `st_dev` من ناتج الوظائف `lstat(2)` و `[stat]({filename}../../stat)(2)` للحصول على القيم المناسبة لأنظمة الملفات الخاصة بك). فيما يلي مثال من Sun Solaris 2.6 `/etc/mnttab` لنظام ملفات مُركّب عن بُعد عبر NFS:
```
nfs ignore,noquota,dev=2a40001
```
هناك ميزة في وجود إدخالات `dev=xxxx` في ملف جدول التركيب الخاص بك، خاصةً لأنظمة الملفات التي يتم تركيبها من خوادم NFS بعيدة. عندما يتعطل خادم بعيد وتريد تحديد مستخدميه عن طريق تشغيل lsof على أحد العملاء، فمن المحتمل أن lsof لن يتمكن من الحصول على ناتج من الوظائف `lstat(2)` و `[stat]({filename}../../stat)(2)` لنظام الملفات. إذا كان بإمكانه الحصول على رقم جهاز نظام الملفات من جدول التركيب، فسيتمكن من عرض الملفات المفتوحة على خادم NFS المعطل.
قد توفر بعض الأنظمة التي لا تستخدم ملف `/etc/mtab` أو `/etc/mnttab` بتنسيق ASCII لجدول التركيب بديلاً لرقم الجهاز في جداول التركيب الداخلية الخاصة بها. يتضمن ذلك AIX و Apple Darwin و FreeBSD و NetBSD و OpenBSD و Tru64 UNIX. يعرف lsof كيفية الحصول على رقم الجهاز البديل لهذه الأنظمة ويستخدمه عندما يتم منع محاولته لتشغيل `lstat(2)` أو `[stat]({filename}../../stat)(2)` على نظام الملفات.
إذا لم تكن متأكدًا مما إذا كانت لهجتك توفر أرقام أجهزة بديلة لأنظمة الملفات من جدول التحميل الخاص بها، فاستخدم هذا الأمر من lsof لمعرفة ما إذا كان يعرض أي أرقام أجهزة بديلة:
lsof -b
ابحث عن رسائل تحذير ملف الخطأ القياسي التي تبدأ بـ افتراض "dev=xxxx" من....
ذاكرة التخزين المؤقت لاسم النواة
يمكن لـ lsof فحص ذاكرة التخزين المؤقت لأسماء النواة أو استخدام مرافق النواة الأخرى (مثل وظيفة ADVFS x tag_to_path() في نظام Tru64 UNIX) في بعض اللهجات لمعظم أنواع أنظمة الملفات، باستثناء AFS، واستخراج مكونات اسم المسار المستخدمة حديثًا منها. (لا تستخدم عمليات البحث عن مسار نظام ملفات AFS ذاكرة التخزين المؤقت لأسماء النواة؛ يبدو أن بعض عمليات نظام ملفات Solaris VxFS لا تستخدمها أيضًا.)
يعرض lsof المسارات الكاملة التي يجدها في عمود NAME. إذا لم يتمكن lsof من الإبلاغ عن جميع المكونات في مسار، فإنه يعرض في عمود NAME اسم نظام الملفات، متبوعًا بمسافة، وعلامتين -، ومسافة أخرى، ثم أسماء المكونات التي تم تحديدها، مفصولة بالحرف /.
عند تشغيل lsof في الوضع المتكرر - أي مع تحديد الخيار -r - قد يختلف مدى قدرة lsof على الإبلاغ عن مكونات اسم الملف نفسه من دورة إلى أخرى. وذلك لأن العمليات الأخرى قيد التشغيل يمكن أن تتسبب في إزالة النواة للإدخالات من ذاكرة التخزين المؤقت لأسماء النواة واستبدالها بإدخالات أخرى.
قد يؤدي استخدام lsof لذاكرة التخزين المؤقت لأسماء النواة لتحديد مسارات الملفات إلى الإبلاغ عن مكونات غير صحيحة في بعض الظروف. يمكن أن يحدث هذا عندما تستخدم ذاكرة التخزين المؤقت لأسماء النواة رقم الجهاز ورقم العقدة كمفتاح (على سبيل المثال، SCO OpenServer)، ويتم إعادة استخدام مفتاح في نظام ملفات سريع التغيير. إذا كانت ذاكرة التخزين المؤقت لأسماء النواة الخاصة باللهجة لا تقوم بإزالة إدخال ذاكرة التخزين المؤقت لملف عندما يتم إلغاء ربطه، فقد يجد lsof مرجعًا للإدخال الخاطئ في ذاكرة التخزين المؤقت. يحتوي قسم الأسئلة الشائعة لـ lsof (يعطي هذا القسم موقعه) على مزيد من المعلومات حول هذا الموقف.
يمكن لـ lsof الإبلاغ عن مكونات اسم المسار للهجات التالية:
FreeBSD
HP-UX
Linux
NetBSD
SCO OpenServer
SCO|Caldera UnixWare
Solaris
Tru64 UNIX
لا يمكن لـ lsof الإبلاغ عن مكونات اسم المسار للهجات التالية:
AIX
OpenBSD
إذا كنت تريد معرفة سبب عدم قدرة lsof على الإبلاغ عن مكونات اسم المسار لبعض اللهجات، فراجع قسم الأسئلة الشائعة لـ lsof (يعطي هذا القسم موقعه).
ملف ذاكرة التخزين المؤقت للأجهزة
يمكن أن يكون فحص جميع أعضاء شجرة العقد /dev (أو /devices) باستخدام وظائف stat(2) أمرًا يستغرق وقتًا طويلاً. علاوة على ذلك، فإن المعلومات التي يحتاجها lsof - رقم الجهاز، ورقم العقدة، والمسار - نادرًا ما تتغير.
وبالتالي، يحتفظ lsof عادةً بملف نصي ASCII يحتوي على معلومات ذاكرة التخزين المؤقت لـ /dev (أو /devices) (باستثناء نظام Linux القائم على /proc، حيث لا يكون ذلك ضروريًا). يمكن للمسؤول النظام المحلي الذي يقوم ببناء lsof التحكم في الطريقة التي يتم بها تشكيل مسار ملف ذاكرة التخزين المؤقت للأجهزة، مع الاختيار من بين هذه الخيارات:
المسار من الخيار -D؛
المسار من متغير بيئة؛
مسار على مستوى النظام؛
مسار شخصي (افتراضي)؛
مسار شخصي، تم تعديله بواسطة متغير بيئة.
راجع ناتج خيارات المساعدة -h أو -D؟ أو -؟ لمعرفة الحالة الحالية لدعم ذاكرة التخزين المؤقت للأجهزة. يعرض ناتج المساعدة المسار الافتراضي لملف ذاكرة التخزين المؤقت للأجهزة للقراءة والذي يكون ساري المفعول لاستدعاء lsof الحالي. يعرض خيار -D؟ مسارات ملفات ذاكرة التخزين المؤقت للأجهزة للقراءة والكتابة، وأسماء أي متغيرات بيئة قابلة للتطبيق، وتنسيق المسار الشخصي لذاكرة التخزين المؤقت للأجهزة.
يمكن لـ lsof اكتشاف أن ملف ذاكرة التخزين المؤقت للأجهزة الحالي قد تم تعديله عن طريق الخطأ أو بشكل ضار عن طريق فحوصات السلامة، بما في ذلك حساب والتحقق من مجموع التحقق الدوري (CRC) المكون من ستة عشر بت لمحتويات الملف. عندما يكتشف lsof وجود خطأ في الملف، فإنه يصدر تحذيرًا ويحاول إزالة ملف ذاكرة التخزين المؤقت الحالي وإنشاء نسخة جديدة، ولكن فقط إلى مسار يمكن للعملية الكتابة إليه بشكل مشروع.
قد لا يكون المسار الذي تحاول عملية lsof قراءة ملف ذاكرة التخزين المؤقت للأجهزة منه هو نفسه المسار الذي يمكنها الكتابة إليه بشكل مشروع. لذلك، عندما يكتشف lsof أنه بحاجة إلى تحديث ملف ذاكرة التخزين المؤقت للأجهزة، فقد يختار مسارًا مختلفًا للكتابة إليه عن المسار الذي قرأ منه نسخة غير صحيحة أو قديمة.
إذا كان متاحًا، سيمنع الخيار -Dr كتابة ملف ذاكرة تخزين مؤقت جديد للأجهزة. (إنه متاح دائمًا عند تحديده بدون وسيطة اسم مسار).
عند إضافة جهاز جديد إلى النظام، قد يلزم إعادة إنشاء ملف ذاكرة التخزين المؤقت للأجهزة. نظرًا لأن lsof يقارن وقت تعديل ملف ذاكرة التخزين المؤقت للأجهزة بوقت التعديل ووقت الإنشاء لدليل /dev (أو /devices)، فإنه عادةً ما يكتشف إضافة جهاز جديد؛ في هذه الحالة، يصدر lsof رسالة تحذير ويحاول إعادة بناء ملف ذاكرة التخزين المؤقت للأجهزة.
في كل مرة يكتب فيها lsof ملف ذاكرة التخزين المؤقت للأجهزة، فإنه يعين ملكيته إلى معرف المستخدم الحقيقي للعملية قيد التشغيل، ويقوم بتعيين أوضاع الأذونات الخاصة به إلى 0600، مما يحد من قراءته وكتابته إلى مالك الملف.
أذونات LSOF التي تؤثر على الوصول إلى ملف ذاكرة التخزين المؤقت للأجهزة
يؤثر اثنان من أذونات برنامج lsof القابل للتنفيذ على قدرته على الوصول إلى ملفات ذاكرة التخزين المؤقت للأجهزة. يتم تعيين الأذونات بواسطة مسؤول النظام المحلي عند تثبيت lsof.
الأذن الأولى والأقل شيوعًا هي setuid-root. يصبح ساري المفعول عند تنفيذ lsof؛ يصبح معرف المستخدم الفعال الخاص به هو الجذر، بينما معرف المستخدم الحقيقي (أي معرف المستخدم للمستخدم الذي قام بتسجيل الدخول) ليس كذلك. توصي توزيعة lsof بأن تكون الإصدارات الخاصة بهذه اللهجات قيد التشغيل باستخدام setuid-root.
HP-UX 11.11 و 11.23
Linux
الأذن الثانية والأكثر شيوعًا هي setgid. يصبح ساري المفعول عندما يتم تعيين معرف المجموعة الفعال لعملية lsof إلى معرف يمكنه الوصول إلى أجهزة ذاكرة النواة - على سبيل المثال، "kmem" أو "sys" أو "system".
عادةً ما يتخلى برنامج lsof الذي لديه إذن setgid عن هذا الإذن بعد الوصول إلى أجهزة الذاكرة الداخلية. عندما يفعل ذلك، يمكن لـ lsof السماح بتكوينات مسار ذاكرة تخزين الأجهزة أكثر مرونة. توصي توزيعة lsof بأن تعمل الإصدارات الخاصة بهذه الأنظمة كبرامج setgid وأن يُسمح لها بالتخلي عن إذن setgid.
AIX 5.[12] و 5.3-ML1
Apple Darwin 7.x أنظمة Power Macintosh
FreeBSD 4.x، 4.1x، 5.x و [6789].x للأنظمة القائمة على x86
FreeBSD 5.x، [6789].x و 1[012].8 للأنظمة القائمة على Alpha و AMD64 و Sparc64
HP-UX 11.00
NetBSD 1.[456]، 2.x و 3.x للأنظمة القائمة على Alpha و x86 و SPARC
OpenBSD 2.[89] و 3.[0-9] للأنظمة القائمة على x86
SCO OpenServer الإصدار 5.0.6 للأنظمة القائمة على x86
SCO|Caldera UnixWare 7.1.4 للأنظمة القائمة على x86
Solaris 2.6، 8، 9 و 10
Tru64 UNIX 5.1
(ملاحظة: يتطلب برنامج lsof الخاص بـ AIX 5L والإصدارات الأحدث إذن setuid-root إذا تم استخدام الخيار -X.)
لا يدعم برنامج lsof لهذه الأنظمة ذاكرة تخزين الأجهزة، لذا فإن الأذونات الممنوحة للملف القابل للتنفيذ لا تنطبق على ملف ذاكرة تخزين الأجهزة.
Linux
مسار ملف ذاكرة تخزين الأجهزة من الخيار -D
يوفر الخيار -D وسيلة محدودة لتحديد مسار ملف ذاكرة تخزين الأجهزة. ستعرض وظيفته ? مسارات ملف ذاكرة تخزين الأجهزة للقراءة فقط والكتابة التي سيستخدمها lsof.
عندما تكون الوظائف b و r و u متاحة، يمكنك استخدامها لطلب إنشاء ملف ذاكرة التخزين المؤقت في موقع معين (b[path])؛ أو قراءة ملف ذاكرة التخزين المؤقت ولكن عدم إعادة إنشائه (r[path])؛ أو قراءة وإعادة إنشاء ملف ذاكرة التخزين المؤقت (u[path]). يتم تقييد الوظائف b و r و u في بعض الحالات. يتم تقييدها عندما يكون برنامج lsof يعمل بإذن setuid-root. المسار المحدد باستخدام الوظيفة r للقراءة فقط دائمًا، حتى عندما يكون متاحًا.
تُقيَّد الوظائف b و r و u أيضًا عندما يعمل برنامج lsof بإذن setgid ولا يتخلى lsof عن إذن setgid. (راجع قسم "أذونات LSOF التي تؤثر على الوصول إلى ملف ذاكرة تخزين الأجهزة" للحصول على قائمة بالتطبيقات التي لا تتخلى عادةً عن إذن setgid الخاص بها.)
تتوفر دائمًا وظيفة أخرى -D، وهي i (للتجاهل).
عند توفرها، تخبر الوظيفة b برنامج lsof بقراءة معلومات الجهاز من النواة باستخدام الدالة [stat]({filename}../../stat)(2) وإنشاء ملف ذاكرة تخزين للأجهزة في المسار المحدد.
عند توفرها، تخبر الوظيفة r برنامج lsof بقراءة ملف ذاكرة تخزين الأجهزة، ولكن ليس تحديثه. عندما يصاحب وسيطة مسار الوظيفة -Dr، فإنه يحدد مسار ملف ذاكرة تخزين الأجهزة. تكون الوظيفة r متاحة دائمًا عند تحديدها بدون وسيطة اسم مسار. إذا لم يكن lsof يعمل بإذن setuid-root ويتخلى عن إذن setgid الخاص به، فيمكن أن يصاحب الوظيفة r وسيطة اسم مسار.
عند توفرها، تخبر الوظيفة u برنامج lsof بمحاولة قراءة ملف ذاكرة تخزين الأجهزة واستخدامه. إذا لم يتمكن من قراءة الملف، أو إذا وجد أن محتويات الملف غير صحيحة أو قديمة، فإنه سيقرأ المعلومات من النواة، ويحاول كتابة نسخة محدثة من ملف ذاكرة تخزين الأجهزة، ولكن فقط إلى مسار يعتبره برنامج lsof شرعيًا لـ UID الفعلي و UID الفعلي للعملية.
مسار ذاكرة التخزين المؤقت للأجهزة من متغير بيئة
الخيار الثاني لـ lsof لملف ذاكرة التخزين المؤقت للأجهزة هو محتوى متغير البيئة LSOFDEVCACHE. يتم تجنب هذا الخيار إذا كانت عملية lsof قيد التشغيل بصلاحيات المستخدم الجذر، أو إذا كان معرف المستخدم الفعلي للعملية هو المستخدم الجذر.
ينطبق قيد إضافي على مسار ملف ذاكرة التخزين المؤقت للأجهزة الذي يتم الحصول عليه من متغير البيئة LSOFDEVCACHE: لن يقوم lsof بالكتابة إلى مسار ملف ذاكرة التخزين المؤقت للأجهزة إذا لم تتخل عملية lsof عن صلاحية setgid الخاصة بها. (انظر قسم "صلاحيات lsof التي تؤثر على الوصول إلى ملف ذاكرة التخزين المؤقت للأجهزة" للحصول على معلومات حول التطبيقات التي لا تتخلى عن صلاحية setgid الخاصة بها).
يمكن للمسؤول المحلي للنظام تعطيل استخدام متغير البيئة LSOFDEVCACHE أو تغيير اسمه عند بناء lsof. راجع ناتج الأمر -D? لمعرفة اسم متغير البيئة.
مسار ذاكرة التخزين المؤقت للأجهزة على مستوى النظام
قد يختار مسؤول النظام المحلي وجود ملف ذاكرة تخزين مؤقت للأجهزة على مستوى النظام عند بناء lsof. سيتم إنشاء هذا الملف بشكل عام بواسطة إجراء خاص لإدارة النظام عند بدء تشغيل النظام أو عند تغيير محتويات /dev أو /devices. إذا تم تعريفه، فهو الخيار الثالث لـ lsof لمسار ملف ذاكرة التخزين المؤقت للأجهزة.
يمكنك معرفة ما إذا كان ملف ذاكرة التخزين المؤقت للأجهزة على مستوى النظام قيد الاستخدام لتثبيتك المحلي عن طريق فحص ناتج خيار المساعدة الخاص بـ lsof، أي الناتج من الخيار -h أو -?.
لن يقوم lsof بالكتابة إلى مسار ملف ذاكرة التخزين المؤقت للأجهزة على مستوى النظام بشكل افتراضي. يجب تحديدها بشكل صريح باستخدام خيار -D في إجراء مملوك للمستخدم الجذر. بمجرد كتابة الملف، يجب أن يغير الإجراء أذونات الوصول الخاصة به إلى 0644 (قراءة/كتابة للمالك، وقراءة للمجموعة، وقراءة للآخرين).
مسار ذاكرة التخزين المؤقت للأجهزة الشخصية (افتراضي)
مسار ملف ذاكرة التخزين المؤقت للأجهزة الافتراضي لتوزيعة lsof هو المسار الموجود في الدليل الرئيسي لمعرف المستخدم الفعلي الذي يقوم بتشغيل lsof. تتم إضافة مكون مسار ثانٍ إلى الدليل الرئيسي، ويكون تنسيقه على شكل .lsof\_hostname.
هذا هو الخيار الرابع لـ lsof لمسار ملف ذاكرة التخزين المؤقت للأجهزة، وعادة ما يكون هو الافتراضي. إذا تم تحديد مسار ملف ذاكرة التخزين المؤقت للأجهزة على مستوى النظام عند بناء lsof، فسيتم تطبيق هذا الخيار الرابع عندما لا يتمكن lsof من العثور على ملف ذاكرة التخزين المؤقت للأجهزة على مستوى النظام. هذا هو الوقت الوحيد الذي يستخدم فيه lsof مسارين عند قراءة ملف ذاكرة التخزين المؤقت للأجهزة.
الجزء الخاص باسم المضيف من المكون الثاني هو الاسم الأساسي للمضيف الذي يتم تشغيل lsof عليه، كما يتم إرجاعه بواسطة الدالة gethostname(2). يُعرَّف الاسم الأساسي بأنه الأحرف التي تسبق النقطة الأولى (.) في ناتج الدالة gethostname(2)، أو جميع ناتج الدالة gethostname(2) إذا لم يحتوي على أي نقطة (.).
ملف ذاكرة التخزين المؤقت للأجهزة مملوك لمعرف المستخدم وهو قابل للقراءة والكتابة بواسطة معرف المستخدم فقط، أي أن أوضاع الوصول الخاصة به هي 0600. لكل معرف مستخدم فعلي مميز على مضيف معين يقوم بتشغيل lsof، يوجد ملف ذاكرة تخزين مؤقت للأجهزة مميز. يميز الجزء الخاص باسم المضيف من المسار ملفات ذاكرة التخزين المؤقت للأجهزة التي تتم كتابتها في دليل رئيسي مُثبَّت عبر NFS من عدة مضيفات مختلفة.
يمثل مسار ملف ذاكرة التخزين المؤقت للجهاز الشخصي الذي تم إنشاؤه بواسطة هذه الطريقة ملف ذاكرة تخزين مؤقت للجهاز الذي سيحاول [lsof] قراءته، وسيحاول الكتابة إليه إذا لم يكن موجودًا أو إذا كانت محتوياته غير صحيحة أو قديمة.
سيؤدي خيار -Dr بدون وسيطة مسار إلى منع كتابة ملف ذاكرة تخزين مؤقت جديد للجهاز.
سيؤدي خيار -D? إلى إدراج مواصفات التنسيق لإنشاء ملف ذاكرة التخزين المؤقت للجهاز الشخصي. يتم وصف التحويلات المستخدمة في مواصفات التنسيق في ملف 00DCACHE الموجود في توزيعة [lsof].
مسار ذاكرة التخزين المؤقت للجهاز الشخصي المعدّل
إذا قام مسؤول النظام المحلي بتحديد هذا الخيار عند إنشاء [lsof]، فقد يتم استخدام محتويات متغير البيئة LSOFPERSDCPATH لإضافة مكون إلى مسار ملف ذاكرة التخزين المؤقت للجهاز الشخصي.
يتم إدراج محتويات متغير البيئة LSOFPERSDCPATH في المسار في المكان الذي يحدده مسؤول النظام المحلي باستخدام تحويل '%p' في تنسيق HASPERSDC الخاص بآلة اللهجة الموجودة في ملف الرأس machine.h. (يتم وضعه مباشرة بعد الدليل الرئيسي في التوزيعة الافتراضية لـ [lsof]).
وبالتالي، على سبيل المثال، إذا كان `LSOFPERSDCPATH` يحتوي على \`\`LSOF\''، والدليل الرئيسي هو \`\`/Homes/abe\''، واسم المضيف هو \`\`lsof.itap.purdue.edu\''، وتنسيق `HASPERSDC` هو التنسيق الافتراضي (\`\`%h/%p.lsof_%L\'')، فإن مسار ملف ذاكرة التخزين المؤقت للجهاز الشخصي المعدّل هو:
/Homes/abe/LSOF/.lsof_vic
يتم تجاهل متغير البيئة LSOFPERSDCPATH عندما تكون عملية [lsof] مضبوطة على setuid-root أو عندما يكون معرف المستخدم الفعلي للعملية هو المستخدم الجذر.
لن يقوم [lsof] بالكتابة إلى مسار ذاكرة التخزين المؤقت للجهاز الشخصي المعدّل إذا كانت عملية [lsof] لا تتخلى عن إذن setgid. (راجع قسم "الأذونات الخاصة بـ [lsof] التي تؤثر على الوصول إلى ملف ذاكرة التخزين المؤقت للجهاز" للحصول على قائمة بالتنفيذات التي لا تتخلى عادةً عن إذن setgid الخاص بها).
إذا كنت تريد، على سبيل المثال، إنشاء دليل فرعي من مسارات ملف ذاكرة التخزين المؤقت للجهاز الشخصي باستخدام متغير البيئة LSOFPERSDCPATH لتسميته، ولم يتخلَّ [lsof] عن إذن setgid الخاص به، فسيتعين عليك السماح لـ [lsof] بإنشاء ملفات ذاكرة التخزين المؤقت للجهاز في المسار الشخصي القياسي ثم نقلها إلى الدليل الفرعي الخاص بك باستخدام أوامر shell.
قد يقوم مسؤول النظام المحلي بما يلي: تعطيل هذا الخيار عند إنشاء [lsof]؛ تغيير اسم متغير البيئة من LSOFPERSDCPATH إلى شيء آخر؛ تغيير تنسيق HASPERSDC لتضمين المكون الشخصي للمسار في مكان آخر؛ أو استبعاد المكون الشخصي للمسار تمامًا. راجع إخراج خيار -D? للحصول على اسم متغير البيئة ومواصفات تنسيق HASPERSDC.
تشخيص الأخطاء
يتم تحديد الأخطاء عن طريق إرسال رسائل إلى ملف الخطأ القياسي.
يعيد [lsof] القيمة واحد (1) إذا تم اكتشاف أي خطأ، بما في ذلك فشل تحديد أسماء الأوامر أو أسماء الملفات أو عناوين الإنترنت أو الملفات أو أسماء تسجيل الدخول أو ملفات NFS أو معرفات العمليات أو معرفات مجموعات العمليات أو معرفات المستخدمين التي طلب عرضها. إذا تم تحديد خيار -V، فسيوضح [lsof] عناصر البحث التي فشل في عرضها. إذا تم تحديد خيار -Q، فسيتجاهل [lsof] أي حالات فشل في عناصر البحث ويعيد خطأ فقط إذا حدث شيء غير عادي ولا يمكن استعادته.
يعيد القيمة صفر (0) إذا لم يتم اكتشاف أي أخطاء، وإذا تم تحديد الخيار -Q أو إذا تمكن من إدراج بعض المعلومات حول جميع وسائط البحث المحددة.
عندما لا يتمكن lsof من الوصول إلى /dev (أو /devices) أو أي من الدلائل الفرعية الخاصة به، أو الحصول على معلومات حول ملف موجود فيها باستخدام [stat]({filename}../../stat)(2)، فإنه يصدر رسالة تحذير ويستمر. سيصدر lsof رسائل تحذير حول الملفات التي لا يمكن الوصول إليها في /dev (أو /devices)، وهذا مذكور في مخرجات المساعدة الخاصة به - والتي يتم طلبها باستخدام الخيارات -h أو -? - بالرسالة:
تم تمكين رسائل التحذير الخاصة بـ /dev التي لا يمكن الوصول إليها.
يمكن قمع رسالة التحذير باستخدام الخيار -w. يمكن أيضًا أن يكون قد تم قمعها بواسطة مسؤول النظام عند تجميع lsof عن طريق تعيين تعريف WARNDEVACCESS. في هذه الحالة، ستتضمن مخرجات خيارات المساعدة الرسالة:
تم تعطيل رسائل التحذير الخاصة بـ /dev التي لا يمكن الوصول إليها.
عادةً ما تختفي رسائل التحذير الخاصة بالجهاز التي لا يمكن الوصول إليها بعد أن يقوم lsof بإنشاء ملف ذاكرة تخزين مؤقت للجهاز يعمل بشكل صحيح.
أمثلة
لمجموعة أكثر شمولاً من الأمثلة، موثقة بشكل كامل، راجع ملف 00QUICKSTART في توزيعة lsof.
لإدراج جميع الملفات المفتوحة، استخدم:
lsof
لإدراج جميع ملفات الإنترنت وx.25 (HP-UX) ومجال UNIX المفتوحة، استخدم:
lsof -i -U
لإدراج جميع ملفات شبكة IPv4 المفتوحة التي يستخدمها العملية التي معرفها هو 1234، استخدم:
lsof -i 4 -a -p 1234
إذا كان من المقبول ألا توجد العملية التي معرفها هو 1234، أو ألا يكون لدى العملية التي معرفها هو 1234 أي ملفات شبكة IPv4 مفتوحة، أضف -Q:
lsof -Q -i 4 -a -p 1234
بافتراض أن لغة UNIX تدعم IPv6، لإدراج ملفات شبكة IPv6 المفتوحة فقط، استخدم:
lsof -i 6
لإدراج جميع الملفات التي تستخدم أي بروتوكول على المنافذ 513 و514 و515 للمضيف wonderland.cc.purdue.edu، استخدم:
lsof -i @wonderland.cc.purdue.edu:513-515
لإدراج جميع الملفات التي تستخدم أي بروتوكول على أي منفذ من mace.cc.purdue.edu (cc.purdue.edu هو المجال الافتراضي)، استخدم:
lsof -i @mace
لإدراج جميع الملفات المفتوحة لاسم تسجيل الدخول \`abe'```، أو معرف المستخدم 1234، أو العملية 456، أو العملية 123، أو العملية 789، استخدم:
lsof -p 456,123,789 -u 1234,abe
لإدراج جميع الملفات المفتوحة على الجهاز /dev/hd4، استخدم:
lsof /dev/hd4
للعثور على العملية التي لديها /u/abe/foo مفتوحة دون القلق بشأن عدم وجود أي منها، استخدم:
lsof -Q /u/abe/foo
لاتخاذ إجراء فقط إذا كانت العملية لديها /u/abe/foo مفتوحة، استخدم:
lsof /u/abe/foo echo "still in use"
لإرسال إشارة SIGHUP إلى العمليات التي لديها /u/abe/bar مفتوحة، استخدم:
kill -HUP `lsof -t /u/abe/bar`
للعثور على أي ملف مفتوح، بما في ذلك ملف مقبس مجال UNIX المفتوح، باسم /dev/log، استخدم:
lsof /dev/log
للعثور على العمليات التي لديها ملفات مفتوحة على نظام ملفات NFS المسمى /nfs/mount/point والذي يكون الخادم الخاص به غير متاح، وبافتراض أن جدول التركيب الخاص بك يوفر رقم الجهاز لـ /nfs/mount/point، استخدم:
lsof -b /nfs/mount/point
لإجراء البحث أعلاه مع إخفاء رسائل التحذير، استخدم:
lsof -bw /nfs/mount/point
لتجاهل ملف ذاكرة التخزين المؤقت للأجهزة، استخدم:
lsof -Di
للحصول على إخراج معرف العملية (PID) واسم الأمر لكل عملية، ووصف الملف، ورقم جهاز الملف، ورقم عقدة الملف لكل ملف لكل عملية، استخدم:
lsof -FpcfDi
لإدراج الملفات الموجودة في واصفي الملفين 1 و 3 لكل عملية يتم تشغيل أمر lsof لها، بمعرف تسجيل الدخول "abe" كل 10 ثوانٍ، استخدم:
lsof -c lsof -a -d 1 -d 3 -u abe -r10
لإدراج الدليل الحالي للعمليات التي تقوم بتشغيل أمر يتكون من أربعة أحرف بالضبط ويحتوي على 'o' أو 'O' في الحرف الثالث، استخدم هذا التعبير النمطي الخاص بخيار -c:
lsof -c /^..o.$/i -a -d cwd
للعثور على ملف مقبس إصدار IP 4 من خلال عنوانه العددي بنمط النقطة المرتبط به، استخدم:
lsof [email protected]
للعثور على ملف مقبس إصدار IP 6 (عندما يدعم نظام UNIX لهجة IPv6) من خلال عنوانه العددي بنمط النقطتين المرتبط به، استخدم:
lsof -i@[0:1:2:3:4:5:6:7]
للعثور على ملف مقبس إصدار IP 6 (عندما يدعم نظام UNIX لهجة IPv6) من خلال عنوان عددي بنمط النقطتين المرتبط به والذي يحتوي على سلسلة من الأصفار - على سبيل المثال، عنوان الحلقة المحلية - استخدم:
lsof -i@[::1]
للحصول على علامة وضع التكرار التي تحتوي على الوقت الحالي، استخدم:
lsof -rm====%T====
لإضافة مسافات إلى السطر المحدد أعلاه، استخدم:
lsof -r "m==== %T ===="
الأخطاء
نظرًا لأن lsof يقرأ ذاكرة النواة في بحثه عن الملفات المفتوحة، فقد تؤدي التغييرات السريعة في ذاكرة النواة إلى نتائج غير متوقعة.
عندما يحتوي الملف على أقفال سجل متعددة، يتم اشتقاق حرف حالة القفل (الذي يلي واصف الملف) من اختبار هيكل القفل الأول، وليس من أي مجموعة من أقفال السجلات الفردية التي قد يصفها هياكل قفل متعددة.
لا يمكن لـ lsof البحث عن الملفات ذات أذونات الوصول المقيدة بالاسم إلا إذا تم تثبيته بإذن المستخدم الجذر (root set-UID). وإلا فإنه يقتصر على البحث عن الملفات التي يمكن للمستخدم أو مجموعة المستخدم المعينة (إن وجدت) الوصول إليها.
يعتمد عرض عنوان الوجهة للمقبس الخام (على سبيل المثال، لأمر ping) على نظام التشغيل UNIX. تخزن بعض اللهجات عنوان الوجهة في كتلة التحكم في البروتوكول الخاصة بالمقبس الخام، بينما لا تفعل ذلك.
لا يمكن لـ lsof دائمًا تمثيل أرقام أجهزة Solaris بنفس الطريقة التي يفعلها ls(1). على سبيل المثال،
لا تكون أرقام الأجهزة الرئيسية والثانوية التي تُبلغ عنها وظائف lstat(2) و stat(2) للدليل الذي يتم تثبيت ملفات CD-ROM عليه (عادةً /cdrom) هي نفسها التي تُبلغ عنها للجهاز الذي يتم تثبيت ملفات CD-ROM عليه (عادةً /dev/sr0). (يقوم lsof بالإبلاغ عن أرقام الدليل).
يتوفر دعم نظام ملفات /proc فقط لـ BSD و Tru64 UNIX، و Linux، واللهجات المشتقة من SYSV R4 - على سبيل المثال، FreeBSD و NetBSD و OpenBSD و Solaris و UnixWare.
بعض عناصر ملف /proc - رقم الجهاز ورقم العقدة وحجم الملف - غير متوفرة في بعض اللهجات. قد يتطلب البحث عن الملفات في نظام ملفات /proc تحديد الاسم الكامل للمسار.
لا يتم عرض أي واصفات ملفات نصية (txt) لعمليات Linux. يتم تصنيف جميع الإدخالات للملفات بخلاف الدليل الحالي ودليل الجذر والواصفات العددية على أنها واصفات ذاكرة (mem).
لا يمكن لـ Lsof البحث عن أنابيب Tru64 UNIX المسماة بالاسم، لأن تنفيذ النواة لـ lstat(2) يُرجع رقم جهاز غير صحيح لأنبوب مسمى.
لا يمكن لـ Lsof الإبلاغ بشكل كامل أو صحيح عن الأقفال على HP-UX 9.01 و 10.20 و 11.00 بسبب عدم كفاية الوصول إلى بيانات النواة أو الأخطاء في بيانات النواة. راجع قسم الأسئلة الشائعة في lsof (يعطي القسم مكانه) للحصول على التفاصيل.
نوع ملف AIX SMT هو اختلاق. إنه مُصمم لهياكل ملفات يكون نوعها (15) غير مُعرَّف في ملف الرأس /usr/include/sys/file.h الخاص بـ AIX. إحدى طرق إنشاء مثل هذه الهياكل هي تشغيل عملاء X مع تعيين متغير DISPLAY إلى ``:0.0''.
الخيار +|-f[cfn] غير مدعوم في Lsof المستند إلى /proc في Linux، لأنه لا يقرأ هياكل النواة من ذاكرة النواة.
البيئة
قد يصل Lsof إلى متغيرات البيئة التالية.
LANG يحدد موقع اللغة. راجع setlocale(3) للحصول على أسماء متغيرات أخرى يمكن استخدامها بدلاً من LANG - على سبيل المثال، LC_ALL أو LC_TYPE وما إلى ذلك.
LSOFDEVCACHE يحدد المسار إلى ملف ذاكرة التخزين المؤقت للأجهزة. راجع قسم مسار ذاكرة التخزين المؤقت للأجهزة من متغير بيئة للحصول على مزيد من المعلومات.
LSOFPERSDCPATH يحدد المكون الأوسط لمسار ملف ذاكرة التخزين المؤقت الشخصية المعدلة. راجع قسم مسار ذاكرة التخزين المؤقت الشخصية المعدلة للحصول على مزيد من المعلومات.
الأسئلة الشائعة
تتوفر الأسئلة الشائعة وإجاباتها في ملف 00FAQ الخاص بتوزيعة lsof.
توجد أحدث نسخة من الملف في:
https://github.com/lsof-org/lsof/blob/master/00FAQ
الملفات
/dev/kmem جهاز ذاكرة افتراضية للنواة
/dev/mem جهاز الذاكرة الفعلية
/dev/swap جهاز التبديل الخاص بالنظام
.lsof_hostname ملف ذاكرة التخزين المؤقت الخاص بـ lsof (اللاحقة، اسم المضيف، هي المكون الأول من اسم المضيف الذي يتم إرجاعه بواسطة gethostname(2)).
المؤلفون
كتب Lsof فيكتور أ. آبل <_> من جامعة بوردو. منذ الإصدار 4.93.0، يقوم فريق lsof-org في GitHub بصيانة lsof. ساهم العديد من الآخرين في lsof. يتم سرد أسمائهم في ملف 00CREDITS الخاص بتوزيعة lsof.
التوزيع
أحدث توزيعة لـ lsof متاحة على
https://github.com/lsof-org/lsof/releases
راجع أيضًا
قد لا توجد جميع صفحات الدليل التالية في كل لهجة UNIX التي تم نقل lsof إليها.
access(2)، awk(1)، crash(1)، fattach(3C)، ff(1)، fstat(8)، fuser(1)، gethostname(2)، isprint(3)، kill(1)، localtime(3)، lstat(2)، modload(8)، mount(8)، netstat(1)، ofiles(8L)، open(2)، perl(1)، ps(1)، readlink(2)، setlocale(3)، stat(2)، strftime(3)، time(2)، uname(1).