لقراءة إصدار Eyecandy HTML ، تفضل بزيارة Linux_Stat.
يتيح لك Linuxstat قراءة حالة نظام Linux. يمكن أن يوضح لك إحصائيات واستخدام وحدة المعالجة المركزية ، وإحصائيات الذاكرة والاستخدامات ، وإحصائيات المبادلة والاستخدامات ، واستخدام البطارية ، ومعلومات BIOS ، وتفاصيل kernel ، و IP المحلية ، وتفاصيل نظام التشغيل ، والحالة المحلية OS-RELEASE + LSB-RELEASE ، وما إلى ذلك.
إنه يعمل فقط على Linux ، واكتشاف نظام التشغيل هو مستخدم هذه الأحجار الكريمة.
| جدول المحتويات |
|---|
| تبعيات وقت التشغيل |
| بناء التبعيات |
| تبعيات وقت التشغيل الاختياري |
| تثبيت |
| الاستخدام |
| ملحوظات |
| أنواع العودة |
| روبي على القضبان |
| Android |
| استنساخ هذا الريبو |
| تطوير |
| الاختبار |
| المساهمة |
| رخصة |
| اللغات |
# pacman -S gcc make ruby
# apt install gcc build-essential ruby ruby-dev build-essential
# emerge --ask dev-lang/ruby
# yum install gcc ruby-devel ruby make
يمكنك تشغيل Linux_stat على *Amazonlinux و *Centos إذا كان لديك Ruby 2.3.0+.
# zypper install gcc ruby ruby-devel make
أنت بحاجة إلى HWData لفك تشفير المعرفات في البائع ومعرفات المنتج إذا كنت تستخدم Linuxstat :: USB و/أو Linuxstat :: PCI
يمكنك تثبيت HWData ببساطة.
# pacman -S hwids
# apt install hwdata
# emerge --ask sys-apps/hwids
# yum install hwdata
zypper install hwdata
ولكن بدون HWDATA ، لن تظهر مثل هذه المعلومات.
يمكنك أيضًا الإشارة إلى نسخة تم تنزيلها من ملف HWData (PCI.IDS / USB.IDS).
اتبع الملاحظة 7 أدناه لمزيد من المعلومات حول ذلك.
أضف هذا السطر إلى Gemfile في التطبيق الخاص بك:
gem 'linux_stat'ثم تنفذ:
$ bundle install
أو تثبيته بنفسك على النحو التالي:
$ gem install linux_stat
فيما يلي وحدات Linuxstat ووظائف الوحدة النمطية في جدول. يتم إنشاء usages.md بواسطة أمر linuxstat.rb -md ، والذي يتوفر بعد التثبيت.
لسهولة الاستخدام ، يتم تعيين Linuxstat أيضًا إلى ثابت LS. لذلك يمكن استبدال Linuxstat :: USB بـ LS :: USB على سبيل المثال.
| وحدة Linuxstat | وصف |
|---|---|
| Linuxstat :: Bios | المعلومات المرتبطة بالسيوكات الخاصة بالنظام |
| Linuxstat :: البطارية | أول معلومات للبطارية للنظام |
| Linuxstat :: CPU | استخدام وحدة المعالجة المركزية للنظام والمعلومات الأخرى ذات الصلة |
| Linuxstat :: fs | المعلومات المتعلقة بنظام ملفات النظام. يتم استخدامه بواسطة وحدة نظام الملفات. |
| Linuxstat :: نظام الملفات | استخدام نظام ملفات النظام والمعلومات الأخرى ذات الصلة |
| Linuxstat :: FTW | File Tree Walk: يمشي عبر ملف ويمنحك بيانات تتعلق بالملفات والدلائل الفرعية الخاصة به |
| Linuxstat :: kernel | المعلومات المتعلقة بنظام النظام |
| Linuxstat :: الذاكرة | استخدام ذاكرة النظام (RAM) والمعلومات الأخرى ذات الصلة |
| Linuxstat :: Mounts | المعلومات المتعلقة بنقطة جبل النظام |
| Linuxstat :: Net | استخدام الإنترنت للنظام والمعلومات الأخرى |
| Linuxstat :: OS | المعلومات المتعلقة بنظام التشغيل للنظام وملفات إصدار التحليل |
| Linuxstat :: PCI | المعلومات المتعلقة بجهاز PCI للنظام (تحليل اختياري لـ HWDATA) |
| Linuxstat :: perttifybytes | تحويل البايتات إلى تنسيق قابل للقراءة البشرية (KB ، KIB ، إلخ) |
| Linuxstat :: Procfs | اقرأ نظام ملفات PROC في C للوصول بشكل أسرع. المساحات المستخدمة |
| Linuxstat :: العملية | عمليات النظام والمعلومات ذات الصلة |
| Linuxstat :: ProcessInfo | وحدة المعالجة المركزية للعملية الفردية للنظام ، واستخدام الذاكرة ، ووقت وحدة المعالجة المركزية ، إلخ. المعلومات |
| Linuxstat :: Swap | المعلومات المتعلقة مبادلة النظام |
| Linuxstat :: Sysconf | تستخدمها وحدات Linuxstat الأخرى ، يوفر تفاصيل مختلفة للنظام مثل Pagesize و Max Kids و Open Files وما إلى ذلك |
| Linuxstat :: Sysinfo | تستخدمها وحدات Linuxstat الأخرى ، وصول أسرع إلى معلومات مثل TotalRam ، و Freeram ، و TotalHigh ، ومتوسط الحمل ، إلخ. |
| Linuxstat :: Thermal | الحالة الحرارية للنظام ، المعلومات المتعلقة بالمروحة ، عدد المستشعرات ، عدد المعجبين ، إلخ. |
| Linuxstat :: USB | المعلومات المتعلقة بجهاز USB للنظام والتهم الأخرى (تحليل اختياري لـ HWDATA) |
| Linuxstat :: uname | تستخدمها وحدات LinuxStat الأخرى ، معلومات UNAME للنظام في C ، والتي يتم توفيرها أيضًا بواسطة أمر uname . |
| Linuxstat :: User | المعلومات المختلفة للمستخدمين للأنظمة ، يوفر اسم المستخدم الحالي ، الدليل الرئيسي ، إلخ. |
لحساب الاستخدام الحالي ، نحتاج إلى الحصول على استخدامين في فاصل زمني معين ، وطرح الثاني من الأول. على سبيل المثال ، إذا كان التنزيل الحالي ( LinuxStat::Net.total_bytes_received ) هو 1000 بايت ، وإذا كان قبل 0.1 ثانية ، كان ذلك 100 بايت ، وهذا يعني أن 900 بايت تم استلامها في 0.1 ثانية. وهذا يعني أن السرعة الحالية هي 9000 بايت/ثانية أو 9 كيلو بايت/ثانية.
بدون الاقتراع ، ليس من الممكن حقًا حساب الاستخدام الحالي. على الرغم من أن الاستخدام الكلي يمكن حسابه. جهاز مراقبة النظام يفعل ذلك أيضًا ...
وبالتالي فإن هذه الطرق تتطلب فاصل الاقتراع:
ينامون لفاصل معين ثم يميز بين البيانات.
لمزيد من المعلومات ، انظر إلى وثائق RI للطرق المذكورة أعلاه.
يمكن أن تبطئ هذه الأساليب تطبيقك قليلاً إلا إذا قمت بتنفيذها في موضوع.
طرق أخرى لا يتم تنفيذ النوم ، وهي تعمل فقط تحت مللي ثانية.
على سبيل المثال:
LinuxStat::CPU.stat(0.1)
=> {0=>7.69, 1=>0.0, 2=>0.0, 3=>18.18, 4=>10.0}
هذا سوف ينام لمدة 0.1 ثانية. لتكون موثوقة ، استخدم وقتًا مثل 0.05 ثانية أو نحو ذلك.
إذا كنت ترغب في إنشاء مراقبة النظام ولا تريد الانتظار ، فعليك أن تفعل شيئًا كهذا:
#!/usr/bin/ruby
require 'linux_stat'
usages = []
thread = Thread.new { }
counter = 0
while true
thread = Thread.new { usages = LinuxStat::CPU.usages(0.5).values } unless thread.alive?
# clears the screen and prints the info
puts "e[2Je[He[3J"
"#{counter += 1}n"
"e[1;33mTotal CPU Usage:e[0m #{usages[0]}%n"
"#{usages[1..-1].to_a.map.with_index { |x, i| "e[1;33mCore #{i}e[0m => #{x}%n" }.join}"
"Total Download: #{LinuxStat::PrettifyBytes.convert_decimal LinuxStat::Net.total_bytes_received}n"
"Total Upload: #{LinuxStat::PrettifyBytes.convert_decimal LinuxStat::Net.total_bytes_transmitted}"
end
لن ينتظر هذا في كل حلقة لمدة 0.5 ثانية ، لكنه لن يقوم بتحديث استخدام وحدة المعالجة المركزية في كل حلقة أيضًا. إذن ما ستراه في استخدام وحدة المعالجة المركزية في كل 0.5 ثانية.
سترى أيضًا زيادة العداد مثل الجنون. مما يعني أنه لا ينتظر لمدة 0.5 ثانية.
لكن الأساليب الأخرى لا تحتوي على هذا التأخير ، وبالتالي في هذا المثال ، ستتمكن من رؤية "التنزيل الكلي" و "التحميل الكلي" في الوقت الفعلي ، بمجرد تحديث Linux kernel ، يقوم Ruby بتنفيذ الحلقة.
ما عليك سوى تشغيل الأمر LinuxStat.rb لاختبار الطريقة التي يأخذها الوقت الذي تم قياسه في microseconds.
هناك مربك 6 طرق مختلفة لحساب عدد وحدة المعالجة المركزية. لكنهم هنا لسبب ما!
حسنًا ، هذا القسم في الواقع يزيل الغموض عن الأساليب.
LinuxStat::CPU.count() : يحصل على وحدة المعالجة المركزية المكونة للنظام. لا تحسب لوحدة المعالجة المركزية المتنوعة. إذا تم تشغيل 3 من 4 من وحدة المعالجة المركزية ، فسيظل يظهر 4. إنه يستدعي sysconf(_SC_NPROCESSORS_CONF)
LinuxStat::ProcessInfo.nproc(pid = $$) : [أيضًا مستعار لـ LinuxStat::ProcessInfo.count_cpu() ]
يعيد عدد المعالجات ، مثل الطرق الثلاثة الأخرى. بدون أي حجج ، يشبه التشغيل require 'etc' ; puts Etc.nprocessors
لذلك هناك تحذير من التحقق من عدد المعالجات بالفعل إلى PID.
على سبيل المثال:
$ ruby -r linux_stat -e "puts LS::ProcessInfo.nproc"
4
$ taskset -c 0 ruby -r linux_stat -e "puts LS::ProcessInfo.nproc"
1
$ taskset -c 0-1 ruby -r linux_stat -e "puts LS::ProcessInfo.nproc"
2
$ taskset -c 0-1,3 ruby -r linux_stat -e "puts LS::ProcessInfo.nproc"
3
$ taskset -c 0-1,3 ruby -r linux_stat -e "puts LS::ProcessInfo.nproc "
3
أو بحجة:
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::ProcessInfo.command_name 4775
=> "electron"
irb(main):003:0> LinuxStat::ProcessInfo.nproc 4775
=> 4
LinuxStat::CPU.online() :هذا يعيد عدد وحدة المعالجة المركزية على الإنترنت كصفيف. لا تتأثر بالمهام أو أي شيء.
على سبيل المثال:
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::CPU.online
=> [0, 1, 3]
باستخدام LinuxStat::CPU.online.count يمكنك حساب وحدة المعالجة المركزية الفعلية عبر الإنترنت على نظامك.
يمكن لأي عدد من وحدة المعالجة المركزية أن يتم تنشيطه داخل وخارج ، وسيقوم هذا بالإبلاغ عن ذلك بشكل صحيح.
يحصل فقط على المعلومات من /proc /stat ؛ ولكن إذا فشل ذلك ، فسيتم قراءة/sys/devices/system/cpu/عبر الإنترنت وتحليل الإخراج للحصول على صفيف.
LinuxStat::CPU.count_online إنها طريقة أكثر قوة تعتبر وحدة المعالجة المركزية عبر الإنترنت. لا ينبغي أن تفشل في معظم الحالات إن لم يكن كل الحالات! ولكن إذا فشلت لبعض الأسباب المخيفة حقًا ، فسيعود الأمر.
The LinuxStat::CPU.offline() :
هذا يعيد عدد وحدة المعالجة المركزية في وضع عدم الاتصال كصفيف. لا تتأثر بالمهام أو أي شيء.
على سبيل المثال:
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::CPU.offline
=> [2]
يمكن لأي عدد من وحدة المعالجة المركزية أن يتم تنشيطه داخل وخارج ، وسيقوم هذا بالإبلاغ عن ذلك بشكل صحيح.
إنه يحصل فقط على المعلومات من/sys/devices/system/cpu/inflline ، وتوصيف الإخراج.
LinuxStat::Sysconf.processor_configured() : يبدو متكرر! في الواقع نعم ، هذا مكتوب في C ، ويسمى LinuxStat::CPU.count .
الفرق هو أن LinuxStat::CPU.count يخبئ قيمة الإرجاع ، وهذه الطريقة لا.
LinuxStat::Sysconf.processor_online() :قد يبدو هذا متكررًا مرة أخرى لـ Linuxstat :: Cpu.Online ، لكنه في الواقع ليس كذلك!
إذا كنت تستخدم أثناء الحلقات ، فقد لا يبلغ عن العدد الصحيح لوحدة المعالجة المركزية في كل مرة.
الأسوأ ، قد يستغرق الأمر وقتًا طويلاً لتحديث إجمالي عدد وحدة المعالجة المركزية.
الفائدة هي ، إنها سريعة جدا!
في الغالب هنا فقط من أجل اكتمال Sysconf.
يمكن أن يأخذ نظام الملفات الحجج. بشكل افتراضي هو "/" أو جذر النظام ...
ولكن من أجل المثال ، للحصول على مساحة قرص مجانية من /، تفعل:
$ irb
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::Filesystem.free('/').fdiv(1024 ** 3).to_s << " GiB"
=> "35.666873931884766 GiB"
لرؤية المساحة الحرة والإجمالية للإبهام:
$ irb
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::Mounts.mount_point('/dev/sdb1')
=> "/run/media/sourav/5c2b7af7-d4c3-4ab4-a035-06d18ffc8e6f"
irb(main):003:0> thumbdrive = _
=> "/run/media/sourav/5c2b7af7-d4c3-4ab4-a035-06d18ffc8e6f"
irb(main):004:0> LinuxStat::Filesystem.free(thumbdrive).fdiv(1024 ** 3).to_s << " GiB"
=> "2.504791259765625 GiB"
irb(main):005:0> LinuxStat::Filesystem.total(thumbdrive).fdiv(1024 ** 3).to_s << " GiB"
=> "29.305004119873047 GiB"
يمكن لجميع الطرق LinuxStat :: ProcessInfo أن تأخذ وسيطة تحتوي على معرف العملية للعملية. بشكل افتراضي ، يكون $$ أو pid من العملية الحالية ، روبي ، نفسها.
مثال: قل أنك تريد أن ترى مقدار استهلاك وحدة المعالجة المركزية Firefox ، لذلك يجب عليك القيام بما يلي (يمكن لـ Firefox إنشاء الكثير من عمليات الطفل رغم ذلك):
LinuxStat::Process.names.find { |x| x[1].include? 'firefox' }[0]
=> 770 # but this differs all the time
$ irb
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> pid = LinuxStat::Process.names.find { |x| x[1].include? 'firefox' }[0]
=> 770
irb(main):003:0> LinuxStat::ProcessInfo.cpu_usage(pid: pid)
=> 0.0
irb(main):004:0> LinuxStat::ProcessInfo.cpu_usage(pid: pid)
=> 15.0
للحصول على استخدام ذاكرة Firefox (على سبيل المثال):
$ irb
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::ProcessInfo.mem_stat(LinuxStat::Process.names.find { |x| x[1].include? 'firefox'.freeze }[0])
=> {:memory=>468472, :virtual_memory=>4754080, :resident_memory=>814388}
للحصول على استخدام الذاكرة فقط في MIB:
$ irb
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::ProcessInfo.memory(LinuxStat::Process.names.find { |x| x[1].include? 'firefox'.freeze }[0]).fdiv(1024).round(2).to_s << " MiB"
=> "467.51 MiB"
تمنحك وحدة Linuxstat :: FS المعلومات الأولية في التجزئة التي تم جمعها من STATVFs.
لم يتم توثيقه أعلاه لأنه لم يقترح تشغيل هذا مباشرة. لكن لا ينبغي أن يسبب أي مشكلة. LinuxStat::Filesystem.stat_raw(fs = '/') يفعل ذلك تلقائيًا.
يتطلب الأمر دائمًا حجة ، وهي سريعة جدًا. يدعو مباشرة واجهة برمجة تطبيقات C دون أي رمز روبي وسيطة.
على سبيل المثال ، للحصول على المعلومات حول "/" أو الجذر:
$ irb
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::FS.stat('/')
=> {:block_size=>4096, :fragment_size=>4096, :blocks=>29292283, :block_free=>9349843, :block_avail_unpriv=>9349843, :inodes=>58612160, :free_inodes=>56708247, :filesystem_id=>2050, :mount_flags=>1024, :max_filename_length=>255}
irb(main):003:0> t = Time.now ; puts LinuxStat::FS.stat('/') ; Time.now - t
{:block_size=>4096, :fragment_size=>4096, :blocks=>29292283, :block_free=>9349843, :block_avail_unpriv=>9349843, :inodes=>58612160, :free_inodes=>56708247, :filesystem_id=>2050, :mount_flags=>1024, :max_filename_length=>255}
=> 5.0468e-05
لمعرفة المزيد عنها ، ما عليك سوى تشغيل RI واسم الطريقة. لرؤية جميع الأساليب المتاحة.
معظم Linuxstat :: المستخدم يدعم الوسائط.
على سبيل المثال ، للحصول على منزل المستخدم بواسطة اسم المستخدم:
$ irb
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::User.home_by_username('root')
=> "/root"
irb(main):003:0> LinuxStat::User.home_by_username('ftp')
=> "/srv/ftp"
irb(main):004:0> LinuxStat::User.home_by_username('mail')
=> "/var/spool/mail"
أو للحصول على منزل المستخدم بواسطة GID/UID:
$ irb
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::User.homes_by_uid(1001)
=> ["/home/userx", "/home/userz"]
irb(main):003:0> LinuxStat::User.homes_by_uid(1000)
=> ["/home/sourav"]
irb(main):004:0> LinuxStat::User.home_by_gid(1001)
=> "/home/userx"
irb(main):005:0> LinuxStat::User.home_by_gid(1000)
=> "/home/sourav"
irb(main):006:0> LinuxStat::User.home_by_gid(0)
=> "/root"
أو للحصول على UID/GID بواسطة اسم المستخدم:
$ irb
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::User.uid_by_username('root')
=> 0
irb(main):003:0> LinuxStat::User.uid_by_username('ftp')
=> 14
irb(main):004:0> LinuxStat::User.gid_by_username('ftp')
=> 11
irb(main):005:0> LinuxStat::User.gid_by_username('InvalidUser')
=> nil
أو للحصول على المستخدم الحالي (في Docker على سبيل المثال):
$ irb
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::User.get_current_user
=> "x"
irb(main):003:0> LinuxStat::User.get_user
=> "x"
irb(main):004:0> LinuxStat::User.get_login
=> ""
إلى اليمين ، يمكن لـ get_login () إرجاع سلسلة فارغة. لكن LinuxStat :: user.get_user أيضًا مستعار مثل LinuxStat :: user.get_current_user يجب ألا تُرجع سلسلة فارغة في معظم الظروف.
تعتمد وحدات PCI و USB فعليًا على HWData الموجودة في/usr/share/hwdata/. إن ls :: usb.devices_stat و ls :: pci.devices_stat يعيد المعلومات في التجزئة:
$ ruby -r linux_stat -e "puts LS::USB.devices_stat.to_s[0..200]"
[{:path=>"/sys/bus/usb/devices/1-1.2/", :id=>"04d9:1203", :vendor_id=>"04d9", :product_id=>"1203", :bus_num=>1, :dev_num=>7, :hwdata=>{:vendor=>"Holtek Semiconductor, Inc.", :product=>"Keyboard"}, :aut
ولكن إذا لم تكن الملفات متوفرة ، فلن تُرجع المعلومات المتعلقة بـ HWData.
لذلك يقترح تثبيت HWData. ولكن قد تواجه مشكلات مع Heroku وغيرها من paa على الإنترنت حيث لا يمكنك تثبيتها. لذلك الإصدار 1.1.1+ يأتي مع وظيفة الوحدة النمطية تسمى hwdata_file = file .
LS::PCI.hwdata_file = File.join(__dir__, 'hwdata', 'pci.ids')
LS::USB.hwdata_file = File.join(__dir__, 'hwdata', 'usb.ids')
على افتراض أن لديك pci.ids و usb.ids تحت ./hwdata دليل.
على القضبان ، يمكنك وضع هذا (استبدال __dir__ بـ Rails.root ) داخل البيئة.
ولكن لاحظ أنه يمكن تعيين الملف مرة واحدة فقط. يُقترح القيام بذلك في بداية تطبيقك.
irb(main):001:0' require 'linux_stat'
=> true
irb(main):002:0> LS::USB.hwdata_file_set?
=> false
irb(main):003:0> LS::USB.devices_stat ; ''
=> ""
irb(main):004:0> LS::USB.hwdata_file_set?
=> true
إنه يعمل على وحدات USB و PCI.
بمجرد تعيين الملف ، فإن الاتصال LS::PCI.hwdata_file = file غير مجدي.
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LS::PCI.initialize_hwdata
=> true
irb(main):003:0> LS::PCI.initialize_hwdata
=> false
ستعود صحيحًا إذا نجحت ، وإلا فإنها ستعود كاذبة. يهدف إلى القيام به مرة واحدة.
إذا لم تقم بتهيئة أساليب ومكالمات تستخدم HWData ، فسوف تسميها وقد تستغرق المكالمة الأولى من 0.1 إلى 0.2 ثانية ، فستتخذ المكالمات المتتالية بعد ذلك بمقدار ميلي ثانية.
في كثير من الأحيان نحتاج إلى العمل مع KB أو MB GB أو TB أو KIB أو MIB أو GIB و TIB ، وما إلى ذلك ، ونحن بحاجة إلى بعض العمل لتحويل البايت إلى تلك الوحدات. نظرًا لأن Linuxstat يوفر الكثير من البيانات بالبايت ، والكيلوبايت ، فإنه من الممل تمامًا تحويلها طوال الوقت. لتجنب مثل هذا الازدواجية ، يأتي مع وحدة الأملس.
على سبيل المثال ، لتحويل البايت إلى اللواحق العشرية:
$irb
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::PrettifyBytes.convert_decimal(1000)
=> "1.00 kilobyte"
irb(main):003:0> LinuxStat::PrettifyBytes.convert_decimal(10000)
=> "10.00 kilobytes"
irb(main):004:0> LinuxStat::PrettifyBytes.convert_decimal(100000)
=> "100.00 kilobytes"
irb(main):005:0> LinuxStat::PrettifyBytes.convert_decimal(10 ** 13)
=> "10.00 terabytes"
لتحويل البايت إلى اللواحق الثنائية:
irb(main):006:0> LinuxStat::PrettifyBytes.convert_binary(1000)
=> "1000.00 bytes"
irb(main):007:0> LinuxStat::PrettifyBytes.convert_binary(10000)
=> "9.77 kibibytes"
irb(main):008:0> LinuxStat::PrettifyBytes.convert_binary(100000)
=> "97.66 kibibytes"
irb(main):009:0> LinuxStat::PrettifyBytes.convert_binary(10 ** 13)
=> "9.09 tebibytes"
لتحويلهم إلى لاحقة عشرية مترية قصيرة:
irb(main):010:0> LinuxStat::PrettifyBytes.convert_short_decimal(1000)
=> "1.00 kB"
irb(main):011:0> LinuxStat::PrettifyBytes.convert_short_decimal(10000)
=> "10.00 kB"
irb(main):012:0> LinuxStat::PrettifyBytes.convert_short_decimal(100000)
=> "100.00 kB"
irb(main):013:0> LinuxStat::PrettifyBytes.convert_short_decimal(10 ** 13)
=> "10.00 TB"
لتحويلهم إلى لاحقة ثنائية IEC قصيرة:
irb(main):014:0> LinuxStat::PrettifyBytes.convert_short_binary(1000)
=> "1000 B"
irb(main):015:0> LinuxStat::PrettifyBytes.convert_short_binary(10000)
=> "9.77 KiB"
irb(main):016:0> LinuxStat::PrettifyBytes.convert_short_binary(100000)
=> "97.66 KiB"
irb(main):017:0> LinuxStat::PrettifyBytes.convert_short_binary(10 ** 13)
=> "9.09 TiB"
يمكن أن يدعم القيم حتى مئات من يوتابيت و yobibytes ، أو YB و YIB. يمكنك أيضًا القيام بأشياء مثل:
$ irb
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::PrettifyBytes.convert_short_decimal(LinuxStat::Mounts.device_stat('/dev/sdb1')[:total])
=> "31.47 GB"
irb(main):003:0> LinuxStat::PrettifyBytes.convert_short_binary(LinuxStat::Mounts.device_stat('/dev/sdb1')[:total])
=> "29.31 GiB"
irb(main):004:0> LinuxStat::PrettifyBytes.convert_short_binary(LinuxStat::Mounts.device_stat('/dev/sdb1')[:used])
=> "26.80 GiB"
irb(main):005:0> LinuxStat::PrettifyBytes.convert_short_binary(LinuxStat::Mounts.device_stat('/dev/sdb1')[:available])
=> "2.51 GiB"
اقرأ وثائق RI لمزيد من المعلومات.
بشكل عام ، إذا كانت الطريقة تُرجع إما تعويم أو عددًا صحيحًا أو وقتًا ، فستعود عوامة أو عدد صحيح أو وقت في جميع الحالات. ولكن إذا لم تكن الحالة متوفرة ، فسيتم إرجاعها.
إذا كانت الطريقة تُرجع علامة تجزئة / صفيف ، فستقوم بإرجاع التجزئة / الصفيف في جميع الحالات. إذا لم تكن الحالة متوفرة ، فسيعود تجزئة / صفيف فارغ.
إذا كانت الطريقة تُرجع سلسلة ، فسيتم إرجاع سلسلة الإرجاع في جميع الحالات. إذا لم تكن الحالة متوفرة ، فستقوم بإرجاع سلسلة مجمدة فارغة.
لا يحتوي على أي خطأ يتم رفعه في وقت التشغيل لسهولة الاستخدام.
إذا كنت بحاجة إلى التحقق من بعض الأساسيات التي تُرجع عدد صحيح أو تعويم ، وكنت تحصل على شيء ، فأنت تعلم أنه غير متوفر ، حتى تتمكن من العمل وفقًا لذلك. ولكن إذا كنت بحاجة إلى قيمة عدد صحيح أو تعويم في 0 إلى أي تنسيق ، فيمكنك استخدام طريقة .to_i أو .to_f على الكائن ، سيتم تحويل NIL إلى الرقم بعد ذلك.
إذا تم رفع بعض الأخطاء ، فيجب الإبلاغ عنه كخطية.
gem linux_stat : $ bundle add linux_stat
يمكنك استخدام Linuxstat مباشرة في القضبان.
Linuxstat لا يدعم Android OS. ولكن لم يتم اختباره بدقة على جميع أجهزة تطبيقات Android.
ولكن في Termux ، يمكنك فقط تشغيل Linuxstat دون مواجهة المشكلات. لاحظ أن عدد وحدة المعالجة المركزية يمكن أن يختلف بسبب ميزة التنقل. لذلك إذا رأيت تغييرات عدد وحدة المعالجة المركزية ، فلا يوجد شيء في الحقيقة حيال ذلك.
كما يتم الترحيب بالمشكلات المتعلقة بتشغيل Linuxstat على Termux.
يُطلب من مستخدمي هذه الأحجار الكريمة اتباع خطوة التثبيت أعلاه لتثبيت هذه الأحجار الكريمة.
هذا الريبو هو فقط لغرض التنمية. يحتوي على ملحقات C التي يمكن أن تفعل أسوأ لتطبيقك المستقر. قد يكون الاستنساخ ، وتجميع الكود من هذا الريبو لتطبيق الإنتاج ، خطأ في تعطل التطبيق بأكمله مباشرة.
يتم إصدار الأحجار الكريمة على Rubygems بعد اختبارات مختلفة.
لذا ، فقط قم بتثبيت الأحجار الكريمة ، لا تستنسخ هذا الريبو لمجرد أن الإصدار يصطدم هنا بميزات جديدة ، ولا يتم الخروج من Rubygems.org.
بعد التحقق من الريبو ، قم بتجميع وتثبيت هذه الأحجار الكريمة على جهازك المحلي مع bundle exec rake install
يمكنك أيضًا تشغيل bin/console للحصول على مطالبة تفاعلية تتيح لك التجربة.
لاختبار جميع الوحدات النمطية ، قم بتشغيل rake install ثم exe/linuxstat.rb . تحقق أيضًا من "الاختبار" أدناه.
مثل الأحجار الكريمة الأخرى ، لا يحتوي هذا على اختبار مثل RSPEC.
نقترح استخدام ملف exe/linuxstat.rb على أنظمة Linux المختلفة للاختبار.
أولاً ، تحتاج إلى تنفيذ bundle exec rake install لتجميع وتثبيت هذه الأحجار الكريمة.
إذا كنت بحاجة إلى اختبار وحدة معينة ، قل وحدة المعالجة المركزية ، فقط قم بتشغيلها مثل هذا:
$ ruby exe/linuxstat.rb CPU
أو:
$ ruby exe/linuxstat.rb cpu
وهذا هو ، الحجة التي تم تمريرها ليست حساسة للحالة. ولكن إذا كانت الوسيطة التي تم تمريرها غير متوفرة وخطأ تمامًا ، فسيقوم بتشغيل جميع أساليب الوحدة النمطية. على سبيل المثال ، لا يمكنك القيام بذلك:
$ ruby exe/linuxstat.rb upc
هذه ليست وحدة صالحة ولا يمكن تشغيلها.
يتم الترحيب بتقارير الأخطاء وطلبات السحب على Github على https://github.com/souravgoswami/linux_stat.
الجوهرة متوفرة كمصدر مفتوح بموجب شروط ترخيص معهد ماساتشوستس للتكنولوجيا.