نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
تحت 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.init، وانها دائما تقريبا root.cwd- دليل العمل الحالي (قد تلاحظ التشابه مع pwdالأمر الذي يطبع دليل العمل الحالي).rtd - الدليل الجذر للعملية.txt- أ text file، يمكن أن يعني هذا إما ملف تكوين متعلق بالعملية أو "شفرة المصدر" المتعلقة (أو التي تنتمي) إلى العملية.mem - ما يسمى بـ "ملف الذاكرة المعنونة" ، وهذا يعني جزء من الذاكرة الافتراضية (اقرأ: ذاكرة الوصول العشوائي) التي تم تخصيصها للملف.r - اقرأ.w - كتابة.u - اقرا و اكتب.REG - ملف عادي.DIR - دليل.FIFO - أول من يخرج أولاً.قد يكون هذا مربكًا بعض الشيء في الوقت الحالي ، ولكن إذا كنت تعمل 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 ( -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نظامك.
نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.
يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".
هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.
اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.
مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.
لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟
ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!
ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.
أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد