Besuchen Sie Linux_Stat, um die HTML -Version von Eyecandy HTML zu lesen.
Mit LinuxStat können Sie den Status eines Linux -Systems lesen. Es kann Ihnen CPU-Statistiken und -verwendungen, Speicherstatistiken und -nutzungen, Swap-Statistiken und -Beutzungen, Batterieverwendungen, BIOS-Info, Kerneldetails, lokale IP, Betriebssystemdetails und analysierte OS-Release + LSB-Release usw. zeigen.
Es funktioniert nur unter Linux, und das Erkennen des Betriebssystems ist bis zum Benutzer dieses Juwel.
| Inhaltsverzeichnis |
|---|
| Laufzeitabhängigkeiten |
| Abhängigkeiten bauen |
| Optionale Laufzeitabhängigkeiten |
| Installation |
| Verwendung |
| Notizen |
| Rückgabetypen |
| Rubin auf Schienen |
| Android |
| Klon dieses Repo |
| Entwicklung |
| Testen |
| Beitragen |
| Lizenz |
| Sprachen |
# 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
Sie können Linux_stat auf *Amazonlinux und *CentOS ausführen, wenn Sie Ruby 2.3.0+ haben.
# zypper install gcc ruby ruby-devel make
Sie benötigen Hwdata, um Anbieter und Produkt -IDs zu dekodieren, wenn Sie LinuxStat :: USB und/oder LinuxStat :: PCI verwenden
Sie können hwdata einfach installieren.
# pacman -S hwids
# apt install hwdata
# emerge --ask sys-apps/hwids
# yum install hwdata
zypper install hwdata
Aber ohne Hwdata werden solche Informationen nicht angezeigt.
Sie können auch auf eine heruntergeladene Kopie der Datei HWDATA (PCI.IDS / USB.IDS) verweisen.
Folgen Sie Anmerkung 7 unten, um weitere Informationen dazu zu erhalten.
Fügen Sie diese Zeile der GemFile Ihrer Anwendung hinzu:
gem 'linux_stat'Und dann ausführen:
$ bundle install
Oder installieren Sie es selbst als:
$ gem install linux_stat
Im Folgenden finden Sie die LinuxStat -Module und Modulfunktionen in einer Tabelle. Usesages.md wird vom Befehl linuxstat.rb -md generiert, der nach der Installation verfügbar ist.
Zur Benutzerfreundlichkeit wird LinuxStat auch der LS -Konstante zugeordnet. Also kann LinuxStat :: USB zum Beispiel durch LS :: USB ersetzt werden.
| LinuxStat -Modul | Beschreibung |
|---|---|
| Linuxstat :: Bios | Information des Systems des Systems |
| Linuxstat :: Batterie | Die ersten Batterie -Batterie -Informationen des Systems |
| LinuxStat :: CPU | CPU -Nutzung des Systems und andere damit verbundene Informationen |
| Linuxstat :: fs | Systemsystembezogene Informationen des Systems. Es wird vom Dateisystemmodul verwendet. |
| LinuxStat :: Dateisystem | Die Dateisystemnutzung des Systems und andere verwandte Informationen |
| Linuxstat :: ftw | Dateibaum Walk: Geht durch eine Datei und gibt Ihnen Daten in Bezug auf eigene und Unterdateien und Verzeichnisse |
| Linuxstat :: Kernel | Kernel -verwandte Informationen des Systems |
| LinuxStat :: Speicher | Verwendung des Systems (RAM) des Systems und andere verwandte Informationen |
| LinuxStat :: Mounts | Informationen des Systems des Systems |
| Linuxstat :: net | Internetnutzung des Systems und andere Informationen |
| Linuxstat :: OS | Systeme des Systems, die mit den Betriebssystemen verbunden sind und Releasedateien analysieren |
| LinuxStat :: PCI | Die PCI -Geräte -verwandten Informationen des Systems (Optionale Analyse von hwdata) |
| LinuxStat :: PrettifyBytes | Bytes in das menschliche lesbare Format umwandeln (KB, KIB usw.) |
| LinuxStat :: Procfs | Lesen Sie das Proc -Dateisystem in C für einen schnelleren Zugriff. Gebrauchte Abgrenzung |
| LinuxStat :: Prozess | Prozesse und verwandte Informationen des Systems |
| LinuxStat :: ProcessInfo | Einzelne Prozess -CPU des Systems, Speicherverbrauch, CPU -Zeit usw. Infos |
| Linuxstat :: Swap | Informationen des Systems Swap verwandte Informationen |
| LinuxStat :: sysconf | Wird von anderen LinuxStat -Modulen verwendet, bietet verschiedene Systemdetails wie PageSize, Max -Kinder, offene Dateien usw. |
| Linuxstat :: sysinfo | Wird von anderen LinuxStat -Modulen verwendet, schnellerer Zugriff auf Informationen wie TotalRam, Freeram, TotalHigh, Lastdurchschnitt usw. |
| Linuxstat :: Thermal | Thermalstatus des Systems, fächerbezogene Informationen, Sensorzahl, Lüfterzahl usw. |
| Linuxstat :: USB | Die USB -Geräte -verwandten Informationen und andere Zählungen des Systems (optionale Analyse von hwdata) |
| Linuxstat :: Uname | Wird von anderen LinuxStat -Modulen verwendet, die Uname -Informationen des Systems in C, wird auch durch den Befehl uname bereitgestellt. |
| LinuxStat :: Benutzer | Die verschiedenen benutzerbezogenen Informationen von Systemen bieten den aktuellen Benutzernamen, das Home -Verzeichnis usw. |
Um die aktuelle Nutzung zu berechnen, müssen wir in einem bestimmten Intervall zwei Verwendungen erhalten und den 2. vom 1. abziehen. Wenn der aktuelle Download ( LinuxStat::Net.total_bytes_received ) beispielsweise 1000 Bytes beträgt, und wenn es vor 0,1 Sekunden 100 Bytes war, bedeutet dies, dass 900 Bytes in 0,1 Sekunden eingegangen sind. Das bedeutet, dass die aktuelle Geschwindigkeit 9000 Bytes/s oder 9 kb/s beträgt.
Ohne die Umfrage ist es nicht wirklich möglich, die aktuelle Verwendung zu berechnen. Obwohl die Gesamtnutzung berechnet werden kann. Ein Systemmonitor macht das auch ...
Daher erfordern diese Methoden ein Wahlintervall:
Sie schlafen für ein bestimmtes Intervall und unterscheiden dann zwischen den Daten.
Weitere Informationen finden Sie in der RI -Dokumentation für die oben genannten Methoden.
Diese Methoden können Ihre Anwendung ein wenig verlangsamen, es sei denn, Sie implementieren sie in einem Thread.
Andere Methoden haben den Schlaf nicht implementiert und arbeiten nur unter einer Millisekunde.
Zum Beispiel:
LinuxStat::CPU.stat(0.1)
=> {0=>7.69, 1=>0.0, 2=>0.0, 3=>18.18, 4=>10.0}
Dies wird 0,1 Sekunden lang schlafen. Um zuverlässig zu sein, verwenden Sie eine Zeit mit 0,05 Sekunden oder so.
Wenn Sie einen Systemmonitor erstellen möchten und nicht warten möchten, müssen Sie so etwas tun:
#!/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
Dies wird in jeder Schleife nicht auf 0,5 Sekunden warten, aber auch die CPU -Verwendung in jeder Schleife nicht aktualisiert. Was Sie also in der CPU -Verwendung in jedem Intervall von 0,5 Sekunden sehen werden.
Sie werden auch sehen, dass der Zähler wie verrückt zunimmt. Das heißt, es wird nicht auf 0,5 Sekunden gewartet.
Die anderen Methoden haben diese Verzögerung jedoch nicht. In diesem Beispiel können Sie den "Gesamtdownload" und "Gesamt -Upload" in Echtzeit sehen, sobald der Linux -Kernel die Daten aktualisiert und Ruby die Schleife ausführt.
Führen Sie einfach den Befehl LinuxStat.rb aus, um zu testen, welche Methode in Mikrosekunden gemessen wird.
Es gibt verwirrend 6 verschiedene Methoden, um die Anzahl der CPU zu zählen. Aber sie sind aus einem bestimmten Grund hier!
Nun, dieser Abschnitt entmystifiziert die Methoden.
LinuxStat::CPU.count() : Es erhält die konfigurierte CPU für das System. Es zählt nicht für Hotplugged CPU. Wenn 3 von 4 CPU ausgeschaltet sind, wird es weiterhin angezeigt. Es ruft sysconf(_SC_NPROCESSORS_CONF) auf.
LinuxStat::ProcessInfo.nproc(pid = $$) : [Auch bei LinuxStat::ProcessInfo.count_cpu() ]]
Es gibt die Anzahl der Prozessoren zurück, wie die anderen 3 Methoden. Ohne Argumente ist es so, als ob das Laufen require 'etc' ; puts Etc.nprocessors
Daher wird die Einschränkung der Überprüfung der Anzahl der Prozessoren der PID zugeteilt.
Zum Beispiel:
$ 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
Oder mit Argument:
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() :Dies gibt die Anzahl der Online -CPU als Array zurück. Es wird nicht von Aufgaben oder irgendetwas betroffen.
Zum Beispiel:
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::CPU.online
=> [0, 1, 3]
Durch die Verwendung LinuxStat::CPU.online.count zählen Sie die tatsächliche Online -CPU in Ihrem System.
Jede N -Anzahl von CPU kann ein und ausgeschaltet werden, und dies wird dies korrekt melden.
Es erhält nur die Informationen von /proc /stat; Wenn es jedoch fehlschlägt, wird es/sys/devices/system/cpu/online gelesen und die Ausgabe analysiert, um ein Array zu erhalten.
Die LinuxStat::CPU.count_online Es ist eine robustere Methode, die die Online -CPU zählt. Es sollte in den meisten, wenn nicht in allen Fällen nicht scheitern! Aber wenn es aus einigen wirklich gruseligen Gründen fehlschlägt, wird es Null zurückgeben.
Das LinuxStat::CPU.offline() :
Dies gibt die Anzahl der Offline -CPU als Array zurück. Es wird nicht von Aufgaben oder irgendetwas betroffen.
Zum Beispiel:
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::CPU.offline
=> [2]
Jede N -Anzahl von CPU kann ein und ausgeschaltet werden, und dies wird dies korrekt melden.
Es wird nur die Informationen von/sys/devices/system/cpu/offline abgerufen und die Ausgabe analysiert.
LinuxStat::Sysconf.processor_configured() : Klingt wiederholt! Eigentlich ja, das ist in C geschrieben und wird von LinuxStat::CPU.count genannt.
Der Unterschied besteht darin, dass LinuxStat::CPU.count den Rückgabewert zwischengespeichert, und diese Methode nicht.
LinuxStat::Sysconf.processor_online() :Dies mag wieder auf LinuxStat :: cpu.online klingen, aber es ist eigentlich nicht!
Wenn Sie während der Schleifen verwenden, meldet dies möglicherweise nicht die richtige Anzahl von CPU.
Schließlich kann es lange dauern, die Gesamtzahl der CPU zu aktualisieren.
Der Vorteil ist, es ist ziemlich schnell!
Es ist meistens nur hier, um die Vollständigkeit von Sysconf zu willen.
Dateisystem kann Argumente aufnehmen. Standardmäßig ist es '/' oder die Wurzel des Systems ...
Um den freien Speicherplatz von /zu erhalten, tun Sie es jedoch:
$ 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"
Um den freien und totalen Raum eines Daumens zu sehen:
$ 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"
Alle Methoden LinuxStat :: ProcessInfo können ein Argument mit der Prozess -ID eines Prozesses einnehmen. Standardmäßig ist es $$ oder die PID des aktuellen Prozesses, Ruby, selbst.
Beispiel: Angenommen, Sie möchten sehen, wie viel CPU Firefox verbraucht, müssen Sie Folgendes tun (Firefox kann jedoch viel Kinderprozess erstellen):
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
Um die Speicherverwendung von Firefox (zum Beispiel) zu erhalten:
$ 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}
Nur die Speicherverwendung in MIB zu erhalten:
$ 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 -Modul gibt Ihnen die Rohinformationen in Hash, die von STATVFs gesammelt wurden.
Es ist oben nicht dokumentiert, da es nicht vorgeschlagen wird, dies direkt auszuführen. Aber es sollte kein Problem verursachen. LinuxStat::Filesystem.stat_raw(fs = '/') macht das automatisch.
Es erfordert immer ein Argument und es ist sehr schnell. Es ruft die C -API direkt ohne Zwischenrubincode auf.
Zum Beispiel, um die Informationen zu '/' oder Root zu erhalten:
$ 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
Um mehr über sie zu erfahren, führen Sie einfach RI und den Methodennamen aus. Um alle verfügbaren Methoden anzuzeigen.
Der größte Teil des LinuxStat :: Benutzer unterstützt Argumente.
Zum Beispiel, um das Haus eines Benutzers nach dem Benutzernamen nach Hause zu bringen:
$ 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"
Oder um das Haus des Benutzers von der GID/UID zu Hause zu bekommen:
$ 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"
Oder um die UID/GID durch Benutzername zu bekommen:
$ 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
Oder um den aktuellen Benutzer (zum Beispiel in Docker) zu erhalten:
$ 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
=> ""
Richtig, das get_login () kann eine leere Zeichenfolge zurückgeben. Aber LinuxStat :: user.get_user auch als linuxstat :: user.get_current_user sollte unter den meisten Umständen keine leere Zeichenfolge zurückgeben.
Die PCI- und USB -Module basieren tatsächlich auf hwdata in/usr/share/hwdata/. Die LS :: USB.Devices_Stat und Ls :: PCI.Devices_Stat gibt die Informationen in einem Hash zurück:
$ 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
Wenn die Dateien jedoch nicht verfügbar sind, werden hwdata -verwandte Informationen nicht zurückgegeben.
Es wird also empfohlen, Hwdata zu installieren. Aber Sie könnten Probleme mit Heroku und anderen Online -PAAs haben, in denen Sie es nicht installieren können. Die Version 1.1.1+ verfügt also über eine Modulfunktion namens hwdata_file = file .
LS::PCI.hwdata_file = File.join(__dir__, 'hwdata', 'pci.ids')
LS::USB.hwdata_file = File.join(__dir__, 'hwdata', 'usb.ids')
Angenommen, Sie haben pci.ids und usb.ids unter ./HWDATA -Verzeichnis.
Auf Rails können Sie dies ( __dir__ durch Rails.root ersetzen) in Environment.rb einsetzen.
Beachten Sie jedoch, dass die Datei nur einmal festgelegt werden kann. Es wird vorgeschlagen, dies zu Beginn Ihrer App zu tun.
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
Es funktioniert auf USB- und PCI -Modulen.
Sobald die Datei festgelegt ist, ist die Aufrufen von LS::PCI.hwdata_file = file vergeblich.
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
Es wird wahr zurückkehren, wenn es funktioniert hat, sonst wird es falsch zurückgegeben. Es ist beabsichtigt, einmal fertig zu werden.
Wenn Sie keine Methoden initialisieren und anrufen, die HWData verwenden, werden sie es anrufen und der erste Anruf kann 0,1 bis 0,2 Sekunden dauern.
Oft müssen wir mit KB, MB GB, TB oder KIB, MIB, GIB, TIB usw. arbeiten, und wir brauchen einige Arbeit, um Bytes in diese Einheiten umzuwandeln. Da Linuxstat viele Daten in Bytes und Kilobytes liefert, ist es ziemlich langweilig, sie ständig zu konvertieren. Um eine solche Duplikation zu vermeiden, wird ein PrettifyBytes -Modul geliefert.
Zum Beispiel um Bytes in Dezimaluffixe umzuwandeln:
$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"
Bytes in binäre Suffixe umwandeln:
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"
Um sie in kurze metrische Dezimaluffixe umzuwandeln:
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"
Um sie in kurze IEC -binäre Suffixe umzuwandeln:
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"
Es kann Werte bis Hunderte von Yottabyte und Yobibyten oder Yb und Yib unterstützen. Sie können auch Sachen wie:
$ 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"
Lesen Sie die RI -Dokumentation für weitere Informationen.
Wenn eine Methode im Allgemeinen entweder einen Float oder eine Ganzzahl oder eine Zeit zurückgibt, gibt sie in allen Fällen einen Float oder eine Ganzzahl oder Zeit zurück. Wenn der Status jedoch nicht verfügbar ist, wird Nil zurückgegeben.
Wenn die Methode ein Hash / Array zurückgibt, wird in allen Fällen zurückgegeben. Wenn der Status nicht verfügbar ist, wird ein leeres Hash / Array zurückgegeben.
Wenn die Methode eine Zeichenfolge zurückgibt, gibt sie in allen Fällen die Rücklaufzeichenfolge zurück. Wenn der Status nicht verfügbar ist, wird eine leere gefrorene Zeichenfolge zurückgegeben.
Es hat keine Implementierung eines Fehlers, der zur einfachen Nutzung in der Laufzeit aufgeregt wird.
Wenn Sie einen Status überprüfen müssen, der eine Ganzzahl oder einen Schwimmer zurückgibt, und Sie NIL erhalten, wissen Sie, dass es nicht verfügbar ist, damit Sie entsprechend arbeiten können. Wenn Sie jedoch den Ganzzahl- oder Float -Wert in 0 in jedem Format benötigen, können Sie die Methode .to_i oder .to_f auf dem Objekt verwenden. Nil wird dann in die Nummer konvertiert.
Wenn ein Fehler aufgeworfen wird, sollte dies als Fehler gemeldet werden.
gem linux_stat hinzu: $ bundle add linux_stat
Sie können LinuxStat direkt in Schienen verwenden.
LinuxStat unterstützt Android OS. Es wird jedoch nicht rigoros auf allen Geräten wie Android -Apps getestet.
Aber in Terux können Sie einfach Linuxstat ausführen, ohne Probleme zu haben. Beachten Sie, dass sich die CPU -Anzahl aufgrund der Hotplugging -Funktion unterscheiden kann. Wenn Sie also sehen, dass sich die CPU -Zählung ändert, gibt es nicht wirklich nichts zu tun.
Außerdem werden Probleme in Bezug auf das Ausführen von Linuxstat zu Termux begrüßt.
Benutzer dieses Juwelen werden gebeten, den oben genannten Installationsschritt zu befolgen, um dieses Juwel zu installieren.
Dieses Repo dient nur für Entwicklungszwecke. Es verfügt über C -Erweiterungen, die Ihre stabile App am schlimmsten sein könnten. Klonen, Code aus diesem Repo für eine Produktions -App erstellen, kann die gesamte App direkt stürzen.
Edelsteine auf Rubygemems werden nach verschiedenen Tests veröffentlicht.
Installieren Sie also einfach das Edelstein, klonen Sie dieses Repo nicht, nur weil die Version hier mit neuen Funktionen gestoßen ist und das Edelstein nicht auf Rubygeems.org ausgeschieden ist.
Kompilieren und installieren Sie dieses Juwel mit bundle exec rake install auf Ihrem lokalen Computer
Sie können auch bin/console für eine interaktive Eingabeaufforderung ausführen, mit der Sie experimentieren können.
Um alle Module zu testen, führen Sie rake install aus und dann exe/linuxstat.rb . Überprüfen Sie auch "Tests" unten.
Wie andere Edelsteine hat dies keinen Test wie RSPEC.
Wir empfehlen, die Datei exe/linuxstat.rb auf verschiedenen Linux -Systemen zu testen.
Zuerst müssen Sie bundle exec rake install ausführen, um dieses Juwel zu kompilieren und zu installieren.
Wenn Sie ein bestimmtes Modul testen müssen, sagen Sie die CPU, führen Sie es einfach so aus:
$ ruby exe/linuxstat.rb CPU
Oder:
$ ruby exe/linuxstat.rb cpu
Das heißt, das verabschiedete Argument ist nicht zu sensibel. Wenn das übergebene Argument jedoch nicht verfügbar ist und direkt falsch ist, werden alle Modulmethoden ausgeführt. Zum Beispiel können Sie nicht:
$ ruby exe/linuxstat.rb upc
Dies ist kein gültiges Modul und kann nicht ausgeführt werden.
Fehlerberichte und Pull -Anfragen sind auf Github unter https://github.com/souravgoswami/linux_stat willkommen.
Das Edelstein ist unter den Bedingungen der MIT -Lizenz als Open Source erhältlich.