كيفية التحقق من فتح الملفات في Linux

How Check Open Files Linux



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

في Linux والأنظمة الشبيهة بيونكس ، كل شيء يشبه الملف. وهذا يعني أن الموارد في نظام Unix يتم تخصيص واصف ملف لها ، بما في ذلك أجهزة التخزين ومآخذ الشبكة والعمليات وما إلى ذلك.







واصف الملف هو رقم فريد يقوم بتعريف ملف وأجهزة الإدخال / الإخراج الأخرى. يصف الموارد وكيفية وصول النواة إليها. فكر في الأمر كبوابة لموارد أجهزة تجريد Kernel.



لسوء الحظ ، فإن مفهوم واصفات الملفات خارج نطاق هذا البرنامج التعليمي ؛ ضع في اعتبارك الرابط الوارد أدناه للبدء في معرفة المزيد:



https://en.wikipedia.org/wiki/File_descriptor





هذا يعني أن الأنظمة الشبيهة بـ Unix و Unix مثل Linux تستخدم هذه الملفات بكثافة. بصفتك مستخدمًا محترفًا لنظام Linux ، فإن رؤية الملفات المفتوحة والعملية والمستخدمين الذين يستخدمونها أمر مفيد للغاية.

سيركز هذا البرنامج التعليمي على طرق عرض الملفات المفتوحة وأي عملية أو مستخدم مسؤول.



المتطلبات المسبقة

قبل أن نبدأ ، تأكد من أن لديك:

  • نظام لينوكس
  • مستخدم بامتيازات الجذر أو sudo

إذا كان لديك هؤلاء ، فلنبدأ:

أداة LSOF

تم إنشاؤها بواسطة Victor A Abell ، قائمة الملفات المفتوحة ، أو lsof للاختصار ، هي أداة مساعدة لسطر الأوامر تتيح لنا عرض الملفات المفتوحة والعمليات أو المستخدمين الذين فتحوها.

تتوفر الأداة المساعدة lsof في توزيعات Linux الرئيسية ؛ ومع ذلك ، قد تجده غير مثبت وبالتالي قد تحتاج إلى تثبيته يدويًا.

كيفية تثبيت lsof على Debian / Ubuntu

لتثبيته على دبيان ، استخدم الأمر:

سودو تحديث apt-get

سودو تثبيت apt-getlsof

كيفية التثبيت على REHL / CentOS

للتثبيت على REHL و CentOS ، استخدم الأمر:

سودوتحديث dnf

سودوdnfتثبيتlsof

كيفية التثبيت على Arch

على Arch ، اتصل بمدير الحزم باستخدام الأمر:

سودوبكمان-له

سودوبكمانlsof

كيفية التثبيت على Fedora

في Fedora ، استخدم الأمر:

سودو يم التثبيتlsof

بمجرد تثبيت الأداة المساعدة lsof وتحديثها ، يمكننا البدء في استخدامها.

الاستخدام الأساسي

لاستخدام أداة lsof ، أدخل الأمر:

سودوlsof

بمجرد تنفيذ الأمر أعلاه ، سيقوم lsof بتفريغ الكثير من المعلومات كما هو موضح أدناه:

يوضح الإخراج أعلاه جميع الملفات التي فتحتها العمليات. يحتوي الإخراج على أعمدة مختلفة ، يمثل كل منها معلومات محددة حول الملف.

  • عمود الأمر - يظهر اسم العملية التي تستخدم الملف.
  • PID - يظهر معرّف العملية للعملية باستخدام الملف.
  • المد والجزر - يظهر معرّف المهمة (الخيوط) للعملية.
  • TASKCMD - تمثيل اسم أمر المهمة.
  • المستعمل - صاحب العملية.
  • فد - يظهر رقم واصف الملف. هذه هي الطريقة التي تستخدم بها العمليات الملف ؛ تشمل الخيارات المتاحة في إخراج هذا العمود ما يلي:
  • cwd - دليل العمل الحالي.
  • انا انا - ملف الذاكرة المعين
  • pd - دليل الوالدين
  • Jld - دليل السجن
  • ltx - نص مكتبة مشتركة
  • rtd - دليل الجذر.
  • رسالة قصيرة - كود البرنامج والبيانات
  • NS - ملف تتبع النواة.
  • يخطئ - خطأ في معلومات واصف الملف
  • mmp - جهاز الذاكرة المعين.
  • نوع - يعرض نوع العقدة المرتبطة بالملف ، مثل:
  • يونكس - لمقبس مجال يونكس.
  • لك - يمثل الدليل
  • ريج - تمثيل الملف العادي
  • CHR - يمثل ملف الحرف الخاص.
  • حلقة الوصل - ملف ارتباط رمزي
  • BLK - بلوك ملف خاص
  • إنت - مقبس مجال الإنترنت
  • FIFO - أنبوب مسمى (ملف First In First Out)
  • يضخ - للأنابيب

و أكثر من ذلك بكثير.

  • الأجهزة - يعرض أرقام الجهاز مفصولة بفواصل في ترتيب ملف الأحرف الخاصة ، والكتلة الخاصة ، والعادية ، والدليل ، وملف NFS.
  • حجم / إيقاف - يظهر حجم ملف pr ملف تعويض بالبايت.
  • العقدة - يعرض رقم عقدة الملف المحلي ونوع بروتوكول الإنترنت وما إلى ذلك.
  • اسم - يعرض اسم نقطة التحميل و fs التي يوجد عليها الملف.

ملحوظة: يرجى الرجوع إلى دليل lsof للحصول على معلومات مفصلة عن الأعمدة.

كيفية إظهار العمليات التي فتحت ملفًا

يوفر لنا Lsof خيارات تساعدنا في تصفية الإخراج لإظهار العمليات التي فتحت ملفًا معينًا فقط.

على سبيل المثال ، لمشاهدة الملف الذي فتح الملف / bin / bash ، استخدم الأمر على النحو التالي:

سودوlsof/صباحا/سحق

سيعطيك هذا مخرجات كما هو موضح أدناه:

الأمر PID USER FD TYPE DEVICE SIZE/NODE NAME

ksmtuned1025الجذر TXT REG253و0 1150704 428303 /usr/صباحا/سحق

سحق 2968سنتوس TXT REG253و0 1150704 428303 /usr/صباحا/سحق

سحق 3075سنتوس TXT REG253و0 1150704 428303 /usr/صباحا/سحق

كيف تظهر الملفات المفتوحة من قبل مستخدم معين

يمكننا أيضًا تصفية الإخراج لإظهار الملفات المفتوحة من قبل مستخدم معين. نقوم بذلك باستخدام العلامة -u متبوعة باسم المستخدم على النحو التالي:

سودوlsof-uالمئات

سيعطيك هذا مخرجات كما هو موضح أدناه:

كيفية إظهار الملفات المفتوحة من خلال عملية محددة

افترض أننا نريد عرض جميع الملفات المفتوحة من خلال عملية معينة؟ لهذا ، يمكننا استخدام PID للعملية لتصفية الإخراج.

على سبيل المثال ، يعرض الأمر أدناه الملفات التي تم فتحها بواسطة bash.

سودوlsof-p 3075

سيعطيك هذا فقط الملفات المفتوحة بواسطة systemd كما هو موضح:

كيفية إظهار الملفات المفتوحة في الدليل

لفتح الملفات في دليل معين ، يمكننا تمرير الخيار + D متبوعًا بمسار الدليل.

على سبيل المثال ، قم بسرد الملفات المفتوحة في الدليل / etc.

سودوlsof + D./إلخ

فيما يلي ناتج هذا:

كيفية إظهار اتصال الشبكة

نظرًا لأن كل شيء في Linux عبارة عن ملف ، يمكننا الحصول على ملفات الشبكة مثل ملفات TCP أو الاتصالات.

يمكننا استخدام الأمر:

سودوlsof-أناTCP

سيعطيك هذا اتصالات TCP في النظام.

يمكنك أيضًا التصفية حسب المنفذ المحدد باستخدام الأمر الموضح أدناه:

سودوlsof-أنا:22

سيعطيك هذا الإخراج كما هو موضح أدناه:

كيفية إظهار الملفات باستمرار

يوفر لنا Lsof وضعًا لتكرار الإخراج كل بضع ثوانٍ. هذا يسمح لك بمراقبة الملفات المفتوحة من قبل عملية أو مستخدم بشكل مستمر.

ومع ذلك ، يتطلب هذا الخيار إنهاء العملية يدويًا.

على سبيل المثال ، يراقب الأمر أدناه باستمرار الملفات المفتوحة على المنفذ 22:

سودوlsof -r-أنا:22

كما ترى ، في الحلقة الثالثة ، يلتقط lsof الاتصال الثابت بالخادم على SSH.

استنتاج

Lsof هو أداة مفيدة بشكل لا يصدق. يسمح لك بمراقبة الملفات الهامة وكذلك مراقبة المستخدمين وعمليات فتح الملفات. يمكن أن يكون هذا مفيدًا بشكل لا يصدق عند استكشاف الأخطاء وإصلاحها أو البحث عن محاولات ضارة للنظام.

كما هو موضح في هذا البرنامج التعليمي ، باستخدام العديد من الأمثلة والأساليب ، يمكنك دمج الوظائف التي توفرها أداة lsof للمراقبة المخصصة.

شكرا لكم على القراءة والمشاركة! أتمنى أن تكون قد تعلمت شيئًا جديدًا!