قم بإنشاء رسوم بيانية/مخططات لاستخدام القرص باستخدام أدوات CLI فقط في Linux

StackOverflow https://stackoverflow.com/questions/40737

سؤال

في هذا السؤال سأل أحدهم عن طرق لعرض استخدام القرص في Linux.أود أن أخطو هذه الخطوة إلى الأمام في مسار cli...ماذا عن برنامج نصي Shell يأخذ الإخراج من شيء مثل إجابة معقولة على السؤال السابق ويقوم بإنشاء رسم بياني/مخطط منه (الإخراج في ملف png أو شيء من هذا القبيل)؟قد يكون هذا رمزًا أكثر من اللازم لطلبه في سؤال عادي، ولكن أعتقد أن شخصًا ما لديه بالفعل خط واحد في مكان ما ...

هل كانت مفيدة؟

المحلول

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

تعد كتابة مكونات Munin الإضافية أمرًا سهلاً للغاية (لقد كان أحد أهداف المشروع).يمكن كتابتها بأي شيء تقريبًا (نص شل، Perl/python/Ruby/etc، C، أي شيء يمكن تنفيذه وإنتاج مخرجات).تنسيق إخراج البرنامج المساعد هو في الأساس disc1usage.value 1234.وتصحيح أخطاء المكونات الإضافية سهل للغاية (مقارنة بـ MRTG)

لقد قمت بإعداده على الكمبيوتر المحمول الخاص بي لمراقبة استخدام القرص واستخدام النطاق الترددي (عن طريق سحب البيانات من لوحة تحكم مزود خدمة الإنترنت الخاص بي، فهو يرسم رسومًا بيانية لسلالتي التنزيل والتحميلات واستخدام مجموعة الأخبار)، ومتوسط ​​التحميل وعدد العمليات.بمجرد أن قمت بتثبيته (حاليًا صعب بعض الشيء على OS X، ولكنه تافه على Linux/FreeBSD)، كنت قد كتبت مكونًا إضافيًا في بضع دقائق، وقد نجح، في المرة الأولى!

أود أن أصف كيفية إعداده، لكن موقع munin سيفعل ذلك بشكل أفضل بكثير مما أستطيع!

هناك مثال التثبيت هنا

بعض البدائل هي ناجيوس والصبار.يمكنك أيضًا كتابة شيء مشابه باستخدام rrdtool.تعد أنظمة Munin وMRTG وCacti جميعها أنظمة أفضل بكثير في الاستخدام تعتمد على أداة الرسوم البيانية هذه.

إذا كنت تريد شيئًا بسيطًا حقًا، يمكنك القيام به..

import os
import time
while True:
    disc_usage = os.system("df -h / | awk '{print $3}'")
    log = open("mylog.txt")
    log.write(disc_usage + "\n")
    log.close()
    time.sleep(60*5)

ثم..

f = open("mylog.txt")
lines = f.readlines()

# Convert each line to a float number
lines = [float(cur_line) for cur_line in lines]

# Get the biggest and smallest
biggest = max(lines)
smallest = min(lines)

for cur_line in lines:
    base = (cur_line - smallest) + 1 # make lowest value 1
    normalised = base / (biggest - smallest) # normalise value between 0 and 1
    line_length = int(round(normalised * 28)) # make a graph between 0 and 28 characters wide
    print "#" * line_length

سيؤدي ذلك إلى إنشاء رسم بياني بسيط لاستخدام القرص.أنا حقا حقا لا أنصحك باستخدام شيء مثل هذا.لماذا؟سيصبح ملف السجل أكبر وأكبر وأكبر.سوف يصبح الرسم البياني أبطأ بشكل تدريجي في الرسم البياني.يستخدم RRDTool نظام قاعدة بيانات متجددة لتخزين بياناته، لذلك لن يزيد حجم الملف أبدًا عن 50-100 كيلو بايت، كما أنه سريع الرسم البياني باستمرار حيث أن الملف ذو طول ثابت.

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

نصائح أخرى

إذا كانت بعض أحرف ASCII "رسومية" بدرجة كافية بالنسبة لك، فيمكنني أن أوصي بها ncdu.إنها أداة تفاعلية رائعة جدًا لواجهة سطر الأوامر (CLI)، والتي تساعدني كثيرًا في التخلص من المجلدات الكبيرة دون الحاجة إلى استخدام cd bigdir ؛du -hs مرارًا وتكرارًا.

لقد دحرجنا أنفسنا في العمل باستخدام أداة RRD (النهاية الخلفية لتخزين البيانات لأدوات مثل MRTG).نقوم بتشغيل برنامج Perl النصي كل 5 دقائق والذي يستغرق du لكل قسم ويحشوه في قاعدة بيانات RRD ثم يستخدم وظيفة الرسم البياني الخاصة بـ RRD لإنشاء الرسوم البيانية.يستغرق الأمر بعض الوقت لمعرفة كيفية إعداد ملفات .rrd (على سبيل المثال، اضطررت إلى إعادة تعلم RPN لإجراء بعض الحسابات التي أردت القيام بها) ولكن إذا كان لديك بعض البيانات التي تريد رسمها بيانيًا بمرور الوقت، أداة RRD هي رهان جيد.

أعتقد أن هناك خيارين:

  1. للحصول على حل CLI خالص، استخدم شيئًا مثل gnuplot.يرى هنا على سبيل المثال الاستخدام.لم أستخدم gnuplot منذ أيام دراستي :-)

  2. ليس حقًا حل CLI خالصًا، ولكن قم بتنزيل شيء من هذا القبيل JFreeChart واكتب تطبيق Java بسيطًا يقرأ stdin ويقوم بإنشاء المخطط الخاص بك.

أتمنى أن يساعدك هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top