مقدمة في Lsof

تحت Linux ، تعتبر العديد من الكائنات ملفًا ، بغض النظر عما إذا كان الكائن هو بالفعل ملف أو جهاز أو دليل أو مقبس. يعد إدراج ملف أمرًا سهلاً ، فهناك غلاف مدمج lsلذلك. ولكن ماذا لو أراد المستخدم معرفة الملفات التي يتم فتحها حاليًا بواسطة عملية خادم الويب؟ أو إذا أراد هذا المستخدم معرفة الملفات التي يتم فتحها في دليل معين؟ وهنا lsofيأتي دور اللعب. تخيل lsofأنه lsمع إضافة "الملفات المفتوحة".

يرجى ملاحظة أنه في حين أن BSD لها فائدة مختلفة لهذه الوظيفة fstat، إلا أن العديد من النكهات الأخرى لـ Unix (Solaris ، على سبيل المثال) تمتلك أيضًا lsof. تختلف الخيارات والأعلام على الأنظمة الأساسية الأخرى ، بالإضافة إلى مظهر الإخراج ، ولكن بشكل عام يجب أن تكون المعرفة في هذه المقالة قابلة للتطبيق عليها أيضًا.

أولاً ، دعنا نلقي نظرة على تنسيق lsofالمخرجات وكيفية قراءتها. الناتج المعتاد lsofبدون أي معلمات يشبه ما يلي. تم اقتطاع هذا من أجل سهولة القراءة.

COMMAND    PID  TID       USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
init         1            root  cwd       DIR              254,1      4096          2 /
init         1            root  rtd       DIR              254,1      4096          2 /
init         1            root  txt       REG              254,1     36992    7077928 /sbin/init
init         1            root  mem       REG              254,1     14768    7340043 /lib/x86_64-linux-gnu/libdl-2.13.so
init         1            root  mem       REG              254,1   1603600    7340040 /lib/x86_64-linux-gnu/libc-2.13.so
init         1            root  mem       REG              254,1    126232    7340078 /lib/x86_64-linux-gnu/libselinux.so.1
init         1            root  mem       REG              254,1    261184    7340083 /lib/x86_64-linux-gnu/libsepol.so.1
init         1            root  mem       REG              254,1    136936    7340037 /lib/x86_64-linux-gnu/ld-2.13.so
init         1            root   10u     FIFO               0,14       0t0       4781 /run/initctl

هذه الأعمدة تعني ما يلي:

  • الأمر - العملية التي ينتمي إليها ملف مفتوح ، في هذا المثال يرتبط كل شيء init.
  • PID - رقم تعريف العملية المذكورة.
  • المستخدم - المستخدم الذي تعمل العملية ضمنه. ل init، وانها دائما تقريبا root.
  • FD - واصف الملف ، الأكثر شيوعًا:
    • cwd- دليل العمل الحالي (قد تلاحظ التشابه مع pwdالأمر الذي يطبع دليل العمل الحالي).
    • rtd - الدليل الجذر للعملية.
    • txt- أ text file، يمكن أن يعني هذا إما ملف تكوين متعلق بالعملية أو "شفرة المصدر" المتعلقة (أو التي تنتمي) إلى العملية.
    • mem - ما يسمى بـ "ملف الذاكرة المعنونة" ، وهذا يعني جزء من الذاكرة الافتراضية (اقرأ: ذاكرة الوصول العشوائي) التي تم تخصيصها للملف.
    • رقم - يمثل الرقم واصف الملف الفعلي ، والحرف بعد الرقم هو الوضع الذي يتم فيه فتح الملف:
    • r - اقرأ.
    • w - كتابة.
    • u - اقرا و اكتب.
  • النوع - يحدد النوع الفعلي للملف ، والأكثر شيوعًا هو:
    • REG - ملف عادي.
    • DIR - دليل.
    • FIFO - أول من يخرج أولاً.
  • الجهاز - الرقم الرئيسي والثانوي للجهاز الذي يحمل الملف.
  • SIZE - حجم الملف بالبايت.
  • NODE - رقم inode للملف.
  • NAME - اسم الملف.

قد يكون هذا مربكًا بعض الشيء في الوقت الحالي ، ولكن إذا كنت تعمل lsofعدة مرات ، فسوف يغرق بسرعة في دماغك.

كما ذكر أعلاه ، lsofتم اختصار الناتج هنا. بدون أي حجج أو فلاتر ، lsofينتج المئات من خطوط الإخراج التي ستجعلك مرتبكًا فقط.

هناك طريقتان أساسيتان لحل هذه المشكلة:

  • استخدم واحدًا أو أكثر من lsofخيارات سطر الأوامر لتضييق النتائج.
  • قم بتوصيل الإخراج ، على سبيل المثال ، grep.

على الرغم من أن الخيار الأخير قد يبدو أكثر راحة حيث لن تضطر إلى حفظ lsofخيارات سطر الأوامر ، إلا أنه ليس بالمرونة والفعالية بشكل عام ، لذلك سنلتزم بالخيار الأول.

دعنا نتخيل أنك تريد فتح ملف باستخدام محرر النصوص المفضل لديك ، وأن محرر النصوص يخبرك أنه لا يمكن فتحه إلا في وضع القراءة فقط لأن برنامجًا آخر يصل إليه بالفعل. lsofسوف يساعدك على معرفة من هو الجاني:

lsof /path/to/your/file

سيؤدي هذا إلى إخراج مشابه لما يلي:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
vim 2679 root    5w   REG  254,1   121525 6035622 /root/lsof.txt

على ما يبدو ، نسيت إغلاق الدورة وكبار السن! تحدث مشكلة مشابهة جدًا عندما تحاول إلغاء تحميل مشاركة NFS umountوإخبارك بأنها لا تستطيع ذلك لأن شيئًا ما زال يصل إلى المجلد المحمّل. مرة أخرى ، lsofيمكن أن تساعدك في تحديد الجاني:

lsof +D /path/to/your/directory/

لاحظ الخط المائل اللاحق ، هذا مهم. وإلا lsofسوف تفترض أنك تعني ملفًا عاديًا. لا تخلط +أمام العلم - lsofلديه العديد من خيارات سطر الأوامر التي يحتاجها +بالإضافة إلى الخيارات الأكثر شيوعًا -. سيبدو الإخراج كما يلي:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
mocp    5637  music    4r   REG   0,19 10147719 102367344 /home/Music/RMS_GNU_SONG.ogg

وهذا يعني أن العملية mocp، مع PID 5637، التي تنتمي للمستخدم musicقد فتحت ملفًا يسمى RMS_GNU_SONG.ogg. ومع ذلك ، حتى بعد إغلاق هذه العملية ، لا تزال هناك مشكلة - لا يمكن إلغاء تحميل وحدة تخزين NFS.

lsofيحتوي على -cعلامة تعرض الملفات التي فتحت اسم عملية عشوائية.

lsof -c mocp

سينتج عن هذا الناتج مثل هذا:

mocp    9383  music    4r   REG   0,19 10147719 102367344 /home/Music/ANOTHER_RMS_GNU_SONG.ogg

في هذا المثال ، هناك مثيل آخر mocpللتشغيل ، يمنعك من إلغاء تحميل المشاركة. بعد إغلاق هذه العملية ، تريد التأكد من أن المستخدم musicليس لديه ملفات أخرى يحتمل أن تكون مفتوحة. lsofيحتوي على -uعلامة لإظهار الملفات المفتوحة من قبل مستخدم معين. تذكر أن الملف ليس دائمًا مجرد ملف عادي على القرص الثابت الخاص بك!

lsof -u music

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

lsof -u music,moremusic

و مهمة مذكرة بشأن السلوك الافتراضي lsof: كانت النتائج أو المستندة، مما يعني أنك سوف نرى نتائج ملف افتتح العمليات التي يملكها إما المستخدم music، أو المستخدم moremusic. إذا كنت ترغب في رؤية نتائج مطابقة النتائج التي يمتلكها كلا المستخدمين ، فسيتعين عليك تمرير العلامة -a:

lsof -au music, moremusic

نظرًا لأن كلا المستخدمين في المجموعة musicusers، فيمكنك أيضًا إدراج الملفات بناءً على المجموعة:

lsof -g musicusers

يمكنك أيضًا دمج علامات سطر الأوامر:

lsof -u music,moremusic -c mocp

or

lsof -u ^music +D /home/Music

في السطر الأخير ، أضفنا علامة خاصة أخرى - ^والتي تشير إلى NOT المنطقية . إذا كان الناتج فارغًا بعد تشغيل هذا الأمر ، فمن المرجح أن يكون إلغاء التثبيت ناجحًا.

في الأمثلة السابقة ، نظرنا في الغالب في الملفات العادية. ماذا عن المقابس واتصالات الشبكة؟

لسرد جميع اتصالات الشبكة الحالية lsofلديها -iالعلم:

lsof -i

يبدو الناتج مشابهًا لما رأيناه حتى الآن ...

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
owncloud  3509  myuser   25u  IPv4  44946      0t0  TCP strix.local:34217->myserver.vultr.com:https (ESTABLISHED)
firefox   3612  myuser   82u  IPv4  49663      0t0  TCP strix.local:43897->we-in-f100.1e100.net:https (ESTABLISHED)
ssh       3784  myuser    3u  IPv4  10437      0t0  TCP strix.local:51416->someserver.in:ssh (ESTABLISHED)
wget      4140  myuser    3w  IPv4  45586      0t0  TCP strix.local:54460->media.ccc.de:http (CLOSE_WAIT)

... باستثناء فرق واحد: بدلاً من أسماء الملفات أو الأدلة ، NAMEيعرض العمود الآن معلومات الاتصال. يتكون كل اتصال من الأجزاء التالية:

  • بروتوكول.
  • اسم المضيف المحلي.
  • منفذ مصدر الاتصال.
  • اسم DNS الوجهة.
  • ميناء الوصول.
  • حالة الاتصال.

كما هو الحال مع العديد من الأدوات الأخرى ، يمكنك إلغاء تحديد حل أسماء ومنافذ DNS ( -nو -P، على التوالي). -iيأخذ العلم معلمات إضافية. يمكنك تحديد ما إذا كان أو لا تظهر tcp، udpأو icmpاتصالات أو بعض الموانئ:

lsof -i :25
or
lsof -i :smtp

مرة أخرى ، يمكن دمج المعلمات. المثال التالي ...

lsof -i tcp:80

... سيعرض لك اتصالات TCP فقط باستخدام المنفذ 80. يمكنك أيضًا دمجها مع الخيارات التي تعرفها بالفعل من الملفات "الكلاسيكية":

lsof -a -u httpd -i tcp

سيظهر لك هذا جميع اتصالات TCP التي فتحها المستخدم httpd. لاحظ -aالعلم الذي يغير السلوك الافتراضي لـ lsof(كما ذكرنا سابقًا). كما هو الحال مع معظم أدوات سطر الأوامر ، يمكنك التعمق بشكل كبير. يعرض لك ما يلي فقط اتصالات TCP التي تكون حالتها "ESTABLISHED":

lsof -i -s TCP:ESTABLISHED

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



Leave a Comment

كيفية تثبيت منصة عربة التسوق LiteCart على أوبونتو 16.04

كيفية تثبيت منصة عربة التسوق LiteCart على أوبونتو 16.04

LiteCart عبارة عن منصة سلة تسوق مجانية ومفتوحة المصدر مكتوبة بلغة PHP و jQuery و HTML 5. وهي عبارة عن برنامج بسيط وخفيف الوزن وسهل الاستخدام للتجارة الإلكترونية

قم بإعداد NFS Share على دبيان

قم بإعداد NFS Share على دبيان

NFS هو نظام ملفات قائم على الشبكة يسمح لأجهزة الكمبيوتر بالوصول إلى الملفات عبر شبكة الكمبيوتر. يوضح هذا الدليل كيف يمكنك فضح المجلدات عبر NF

كيفية تثبيت Matomo Analytics على Fedora 28

كيفية تثبيت Matomo Analytics على Fedora 28

استخدام نظام مختلف؟ Matomo (Piwik سابقًا) هو نظام أساسي مفتوح المصدر للتحليلات ، وهو بديل مفتوح لبرنامج Google Analytics. مصدر Matomo مستضاف

قم بإعداد خادم TeamTalk على Linux

قم بإعداد خادم TeamTalk على Linux

TeamTalk هو نظام مؤتمرات يتيح للمستخدمين إجراء محادثات صوتية / مرئية عالية الجودة ، والدردشة النصية ، ونقل الملفات ، ومشاركة الشاشات. أنا

كيفية تثبيت وتكوين CyberPanel على خادم CentOS 7 الخاص بك

كيفية تثبيت وتكوين CyberPanel على خادم CentOS 7 الخاص بك

استخدام نظام مختلف؟ مقدمة تعد CyberPanel واحدة من أولى لوحات التحكم في السوق مفتوحة المصدر وتستخدم OpenLiteSpeed. ما هذا

كيفية تثبيت وتكوين روبي مع Rbenv و Rails و MariaDB و Nginx و SSL و Passenger على Ubuntu 17.04

كيفية تثبيت وتكوين روبي مع Rbenv و Rails و MariaDB و Nginx و SSL و Passenger على Ubuntu 17.04

Ruby on Rails هو إطار عمل شهير لـ Ruby تم تطويره لزيادة إنتاجية المبرمجين. ومع ذلك ، الحصول على الجواهر والتبعيات المختلفة ر

كيفية الوصول إلى Vultr VPS الخاص بك

كيفية الوصول إلى Vultr VPS الخاص بك

يوفر Vultr عدة طرق مختلفة للوصول إلى VPS لتكوين وتثبيت واستخدام. بيانات اعتماد الوصول بيانات اعتماد الوصول الافتراضية لـ VPS الخاص بك

كيفية بناء Brotli من المصدر على Ubuntu 18.04 LTS

كيفية بناء Brotli من المصدر على Ubuntu 18.04 LTS

استخدام نظام مختلف؟ Brotli هو طريقة ضغط جديدة مع نسبة ضغط أفضل من GZIP. تتم استضافة رمز المصدر الخاص به علنًا على Githu هذا

كيفية تثبيت OpenNMS على Ubuntu 16.04 LTS

كيفية تثبيت OpenNMS على Ubuntu 16.04 LTS

استخدام نظام مختلف؟ OpenNMS عبارة عن منصة إدارة شبكة مفتوحة المصدر على مستوى المؤسسات يمكن استخدامها لمراقبة وإدارة العديد من الأجهزة

نشر WebDAV على دبيان 10 باستخدام WsgiDAV

نشر WebDAV على دبيان 10 باستخدام WsgiDAV

مقدمة: التأليف والإصدار الموزع على الويب (WebDAV) هو امتداد HTTP يوفر إطار عمل لإنشاء الملفات وتعديلها عن بُعد على

استخدام طرق عرض MySQL على دبيان 7

استخدام طرق عرض MySQL على دبيان 7

مقدمة يتميز MySQL بميزة رائعة تعرف باسم طرق العرض. المشاهدات هي استعلامات مخزنة. اعتبرها اسمًا مستعارًا لاستعلام طويل. في هذا الدليل ،

كيفية تثبيت Omeka Classic 2.4 CMS على Fedora 26 LAMP VPS

كيفية تثبيت Omeka Classic 2.4 CMS على Fedora 26 LAMP VPS

استخدام نظام مختلف؟ Omeka Classic 2.4 CMS هو نظام نشر رقمي مجاني ومفتوح المصدر ونظام إدارة المحتوى (CMS) لمشاركة الصور الرقمية

كيفية تثبيت DokuWiki على Ubuntu 16.04 LTS

كيفية تثبيت DokuWiki على Ubuntu 16.04 LTS

استخدام نظام مختلف؟ DokuWiki هو برنامج ويكي مفتوح المصدر مكتوب بلغة PHP ولا يتطلب قاعدة بيانات. يقوم بتخزين البيانات في ملفات نصية. DokuWik

إنشاء Chroot على دبيان

إنشاء Chroot على دبيان

ستعلمك هذه المقالة كيفية إعداد سجن سريع على دبيان. أفترض أنك تستخدم Debian 7.x. إذا كنت تقوم بتشغيل دبيان 6 أو 8 ، فقد يعمل هذا ، ولكن

كيفية تثبيت PiVPN على دبيان

كيفية تثبيت PiVPN على دبيان

مقدمة طريقة سهلة لإعداد خادم VPN على دبيان هي PiVPN. PiVPN هو أداة تثبيت وغلاف لـ OpenVPN. يخلق أوامر بسيطة لك

كيفية تثبيت CyberPanel وتكوينه على Ubuntu 18.04 LTS

كيفية تثبيت CyberPanel وتكوينه على Ubuntu 18.04 LTS

استخدام نظام مختلف؟ مقدمة تعد CyberPanel واحدة من أولى لوحات التحكم في السوق مفتوحة المصدر وتستخدم OpenLiteSpeed. ما هذا

كيفية نشر Ghost v0.11 LTS على Fedora 25

كيفية نشر Ghost v0.11 LTS على Fedora 25

استخدام نظام مختلف؟ Ghost هي منصة تدوين مفتوحة المصدر اكتسبت شعبية بين المطورين والمستخدمين العاديين منذ عام 201

قم بتثبيت RockMongo على CentOS 7

قم بتثبيت RockMongo على CentOS 7

RockMongo هي أداة إدارة MongoDB على الويب تشبه أداة إدارة MySQL: phpMyAdmin. سيغطي هذا البرنامج التعليمي عملية التثبيت

كيفية نشر Lets Chat Server على CentOS 7

كيفية نشر Lets Chat Server على CentOS 7

Lets Chat هو تطبيق دردشة مفتوح المصدر مصمم لتوفير خدمة الرسائل ذاتية الاستضافة للفرق الصغيرة. يعتمد Lets Chat على NodeJS و MongoDB

كيفية تثبيت أداة إدارة مشروع Taiga على CentOS 7

كيفية تثبيت أداة إدارة مشروع Taiga على CentOS 7

استخدام نظام مختلف؟ Taiga هو تطبيق مجاني ومفتوح المصدر لإدارة المشاريع. على عكس أدوات إدارة المشاريع الأخرى ، يستخدم Taiga زيادة

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد