lsof

الأمر lsof هو أمر يعني "سرد الملفات المفتوحة"، ويُستخدم في العديد من أنظمة يونكس لعرض قائمة بجميع الملفات المفتوحة والعمليات التي فتحتها. طُوِّرت هذه الأداة مفتوحة المصدر ودُعمت من قِبَل فيكتور أ. أبيل، المدير المساعد المتقاعد لمركز الحوسبة بجامعة بيردو . وهي تعمل على العديد من توزيعات يونكس وتدعمها. [ 4 ]

lsfdتم تضمين بديل لنظام Linux في util-linux . [ 5 ]

تاريخ

في عام ١٩٨٥، نشر كليف سبنسر ofilesالأمر. تقول صفحة الدليل الخاصة به : "ofiles - الذي لديه ملف مفتوح [...] يعرض مالك ومعرّف أي عملية تصل إلى جهاز محدد". قام سبنسر بتجميعه لنظامي التشغيل 4.2BSD و ULTRIX . [ ٦ ] علاوة على ذلك، في مجموعة الأخبار net.unix-wizards، أشار أيضًا إلى ما يلي: [ ٧ ]

مع كل هذا الحديث حول فصل أنظمة الملفات النشطة، قمت بنشر برنامجي للإشارة إلى من يستخدم نظام ملفات معين، "ofiles" إلى net.sources.

في عام 1988، ظهر الأمر fstat("file status") كجزء من إصدار 4.3BSD-Tahoe . تقول صفحة الدليل الخاصة به: [ 8 ]

يُحدد الأمر fstat الملفات المفتوحة. يُعتبر الملف مفتوحًا إذا كان أحد العمليات قد فتحه، أو إذا كان دليل العمل الخاص بعملية ما، أو إذا كان ملف نصي نشط. في حال عدم تحديد أي خيارات، يُبلغ fstat عن جميع الملفات المفتوحة.

في عام ١٩٨٩، نشر فيك أبيل، ضمن مجموعة comp.sources.unix، نسخًا مُعدّلة من أوامر ofiles وfstat من نظام 4.3BSD-Tahoe إلى " DYNIX 3.0.1[24] لـ Sequent Symmetry وBalance، و SunOS 4.0، و ULTRIX 2.2". [ ٩ ] [ ١٠ ] وقد قام العديد من الأشخاص بتطوير ونقل أوامر ofiles على مر السنين. وقارن أبيل بين الأوامر على النحو التالي: [ ١٠ ]

يُشبه برنامج fstat برنامج ofiles الذي قدمته مؤخرًا. وكما هو الحال مع ofiles، يُحدد fstat الملفات المفتوحة. إلا أن طريقة عمله تختلف قليلًا عن ofiles: يبدأ ofiles باسم الملف ثم يبحث في هياكل proc وuser لتحديد الملف؛ بينما يقرأ fstat جميع هياكل proc وuser، ويعرض المعلومات في جميع الملفات، مع إمكانية تطبيق بعض المرشحات على المخرجات (بما في ذلك مرشح اسم الملف).

بالإضافة إلى netstat -aA و grep، سيحدد fstat العملية المرتبطة باتصال الشبكة، تمامًا كما يفعل ofiles.

في عام 1991، نشر فيك أبيل الإصدار 1.0 من برنامج lsof على مجموعة comp.sources.unix. ويشير إلى ما يلي: [ 1 ]

يعرض الأمر lsof (اختصارًا لـ LiSt Open Files) قائمة بالملفات التي فتحتها العمليات على أنظمة يونكس محددة. هذه إجابتي لمن يسألونني باستمرار متى سأوفر الأمر fstat (الموجود في المجلد 18، العدد 107 من comp.sources.unix) أو الأمر ofiles (الموجود في المجلد 18، العدد 57) على نظام SunOS 4.1.1 أو ما شابه.

يُعدّ Lsof إعادة تصميم كاملة لسلسلة fstat/ofiles، وهو مبنيّ على نموذج vnode الخاص بنظام SunOS. ولذلك، فقد تمّ اختباره على أنظمة AIX 3.1.[357]، و HP-UX [78].x، و NeXTStep 2.[01]، وSequent Dynix 3.0.12 و3.1.2، و Sunos 4.1 و4.1.1. باستخدام طرق الوصول المتاحة في نواة النظام، مثل nlist() وkvm_read()، يقرأ Lsof مدخلات جدول العمليات، ومساحات المستخدم، ومؤشرات الملفات للوصول إلى البنى الأساسية التي تصف الملفات التي تفتحها العمليات.

في عام 2018، نشر فيك أبيل الإصدار 4.92 من برنامج lsof. وفي العام نفسه، بدأ عملية نقل المسؤولية. وكتب: [ 11 ]

سأبلغ من العمر 80 عامًا في وقت لاحق من هذا العام، وأعتقد أن الوقت قد حان لإنهاء عملي على إصدارات مراجعة lsof العامة.

تم وضع كود lsof على GitHub ونُقلت مسؤولية صيانته. [ 11 ] [ 12 ]

أمثلة

تشمل الملفات المفتوحة في النظام ملفات القرص، والأنابيب المسماة ، ومنافذ الشبكة ، والأجهزة التي تفتحها جميع العمليات. يُستخدم هذا الأمر عندما يتعذر فصل قرص ما بسبب استخدام ملفات (غير محددة). يمكن الاطلاع على قائمة الملفات المفتوحة (مع تطبيق فلترة مناسبة عند الضرورة) لتحديد العملية التي تستخدم هذه الملفات.

# lsof /var COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME syslogd 350 root 5w VREG 222,5 0 440818 /var/adm/messages syslogd 350 root 6w VREG 222,5 339098 6248 /var/log/syslog cron 353 root cwd VDIR 222,5 512 254550 /var -- atjobs

لعرض المنفذ المرتبط ببرنامج خفي:

# lsof -i -n -P | grep sendmail sendmail 31649 root 4u IPv4 521738 TCP *:25 (LISTEN)

من خلال ما سبق يمكن للمرء أن يرى أن "sendmail" يستمع على منفذه القياسي "25".

-أنا
قائمة بمنافذ بروتوكول الإنترنت (IP).
لا تقم بتحليل أسماء المضيفين (لا يوجد نظام أسماء نطاقات).
-P
لا تقم بتحليل أسماء المنافذ (أدرج رقم المنفذ بدلاً من اسمه).

يمكن أيضًا سرد منافذ يونكس باستخدام lsof -U.

مخرجات الأمر lsof

يوضح ناتج الأمر lsof ما يلي:

  • رقم تعريف العملية (PID) التي فتحت الملف؛
  • رقم تعريف مجموعة العمليات (PGID) للعملية (اختياري)؛
  • رقم تعريف العملية الأصلية (PPID) (اختياري)؛
  • الأمر الذي تقوم العملية بتنفيذه؛
  • مالك العملية؛
  • لجميع الملفات التي يستخدمها البرنامج، بما في ذلك ملف النص قيد التنفيذ والمكتبات المشتركة التي يستخدمها:
    • رقم واصف الملف، إن وجد؛
    • وضع الوصول إلى الملف؛
    • حالة قفل الملف؛
    • أرقام أجهزة الملف؛
    • رقم عقدة الملف (inode)؛
    • حجم الملف أو موضعه؛
    • اسم نظام الملفات الذي يحتوي على الملف؛
    • أي مكونات متاحة من اسم مسار الملف؛
    • أسماء مكونات تدفق الملف؛
    • عناوين الشبكة المحلية والبعيدة للملف؛
    • حالة ملف شبكة TLI (عادةً UDP)؛
    • حالة TCP، وطول قائمة انتظار القراءة، وطول قائمة انتظار الكتابة للملف؛
    • أطوال قراءة وكتابة نافذة TCP للملف (خاص بنظام Solaris فقط)؛ و
    • قيم أخرى خاصة بالملف أو اللهجة.

للاطلاع على قائمة كاملة بالخيارات، راجع صفحة دليل Lsof(8) لنظام Linux. [ 13 ]

انظر أيضاً

مراجع

  1. 1 2 "v25i002: lsof - خليفة fstat و ofiles" . comp.sources.unix. مؤرشف من الأصل بتاريخ 10 يناير 2023. تم الاطلاع عليه بتاريخ 13 أبريل 2023 .
  2. lsof-org. "إصدار lsof 4.99.7 · lsof-org/lsof" . تم الاطلاع عليه بتاريخ 17 يونيو 2026 .
  3. الأسئلة الشائعة حول lsof، 1.9 هل يوجد ترخيص لـ lsof؟
  4. دبليو. ريتشارد ستيفنز؛ بيل فينير؛ أندرو إم. رودوف (2003)، برمجة شبكات يونكس: واجهة برمجة تطبيقات الشبكات Sockets ، أديسون-ويسلي بروفيشنال، رقم ISBN 978-0-13-141155-5
  5. "RFC: lsfd، بديل جديد خاص بنظام لينكس لـ lsof #1418" . مؤرشف من الأصل بتاريخ 19 فبراير 2023. تم الاطلاع عليه بتاريخ 19 فبراير 2023 .
  6. سبنسر، كليف. "ofiles(8)" . groups.google.com.net.sources . مؤرشف من الأصل بتاريخ 13 أبريل 2023. تم الاطلاع عليه بتاريخ 13 أبريل 2023 .
  7. سبنسر، كليف. "تم نشر "ofiles " على net.sources.groups.google.com.net.unix - wizards. مؤرشف من الأصل بتاريخ 13 أبريل 2023. تم الاطلاع عليه بتاريخ 13 أبريل 2023 .
  8. ^ "فستات (8)" . www.tuhs.org . 4.3BSD-تاهو.
  9. "v18i057: تم تعديل الملفات، لا يحتاج إلى مصدر Sun" . comp.sources.unix.
  10. 1 2 "v18i107: عرض حالة جميع الملفات المفتوحة" . comp.sources.unix.
  11. ١ ٢ "تم نقل lsof إلى GitHub وإصدار نسخة جديدة · المشكلة رقم ٣٩٥٧٢ · Homebrew/homebrew-core" . GitHub . مؤرشف من الأصل بتاريخ ١٣ أبريل ٢٠٢٣. تم الاسترجاع بتاريخ ١٣ أبريل ٢٠٢٣ .
  12. "lsof maintenance.md" . GitHub . lsof-org. 10 أبريل 2023. مؤرشف من الأصل في 13 أبريل 2023. تم الاطلاع عليه في 13 أبريل 2023 .
  13. "lsof" . تم الاطلاع عليه بتاريخ 16 يوليو 2020 .