สำหรับการอ่านเวอร์ชัน Eyecandy HTML ให้ไปที่ Linux_stat
Linuxstat ช่วยให้คุณอ่านสถานะของระบบ Linux มันสามารถแสดงสถิติและการใช้งาน CPU สถิติและการใช้งานสถิติการแลกเปลี่ยนและการใช้งานการใช้แบตเตอรี่ข้อมูล BIOS รายละเอียดเคอร์เนล, IP ในท้องถิ่น, รายละเอียดระบบปฏิบัติการและแยกวิเคราะห์ระบบปฏิบัติการ
มันใช้งานได้กับ Linux เท่านั้นและการตรวจจับระบบปฏิบัติการนั้นไม่เกินผู้ใช้อัญมณีนี้
| สารบัญ |
|---|
| การพึ่งพารันไทม์ |
| สร้างการพึ่งพา |
| การพึ่งพารันไทม์เสริม |
| การติดตั้ง |
| การใช้งาน |
| หมายเหตุ |
| ประเภทคืน |
| ทับทิมบนราง |
| Android |
| โคลน repo นี้ |
| การพัฒนา |
| การทดสอบ |
| การบริจาค |
| ใบอนุญาต |
| ภาษา |
# 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 หากคุณมีทับทิม 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 | ข้อมูลที่เกี่ยวข้องกับ BIOS ของระบบ |
| Linuxstat :: แบตเตอรี่ | ข้อมูลแบตเตอรี่แรกของระบบ |
| Linuxstat :: CPU | การใช้งาน CPU ของระบบและข้อมูลอื่น ๆ ที่เกี่ยวข้อง |
| Linuxstat :: FS | ข้อมูลที่เกี่ยวข้องกับระบบไฟล์ของระบบ มันถูกใช้โดยโมดูลระบบไฟล์ |
| Linuxstat :: ระบบไฟล์ | การใช้ระบบไฟล์ของระบบและข้อมูลอื่น ๆ ที่เกี่ยวข้อง |
| linuxstat :: ftw | File Tree Walk: เดินผ่านไฟล์และให้ข้อมูลที่เกี่ยวข้องกับไฟล์ของตัวเองและไฟล์ย่อยและไดเรกทอรี |
| linuxstat :: เคอร์เนล | ข้อมูลที่เกี่ยวข้องกับเคอร์เนลของระบบ |
| Linuxstat :: หน่วยความจำ | การใช้หน่วยความจำของระบบ (RAM) และข้อมูลอื่น ๆ ที่เกี่ยวข้อง |
| Linuxstat :: Mounts | ข้อมูลที่เกี่ยวข้องกับจุดเมาท์ของระบบ |
| linuxstat :: net | การใช้อินเทอร์เน็ตของระบบและข้อมูลอื่น ๆ |
| Linuxstat :: OS | ข้อมูลที่เกี่ยวข้องกับระบบปฏิบัติการของระบบและไฟล์การแยกวิเคราะห์ |
| Linuxstat :: PCI | ข้อมูลที่เกี่ยวข้องกับอุปกรณ์ PCI ของระบบ (การแยกวิเคราะห์ HWData) |
| linuxstat :: prettifybytes | แปลงไบต์เป็นรูปแบบที่อ่านได้ของมนุษย์ (kb, kib ฯลฯ ) |
| linuxstat :: procfs | อ่านระบบไฟล์ PROC ใน C สำหรับการเข้าถึงที่เร็วขึ้น ใช้แล้ว |
| Linuxstat :: กระบวนการ | กระบวนการของระบบและข้อมูลที่เกี่ยวข้อง |
| linuxstat :: processInfo | CPU กระบวนการเดียวของระบบ, การใช้หน่วยความจำเวลา CPU ฯลฯ ข้อมูล |
| linuxstat :: swap | ข้อมูลที่เกี่ยวข้องกับการแลกเปลี่ยนของระบบ |
| linuxstat :: sysconf | ใช้โดยโมดูล Linuxstat อื่น ๆ ให้รายละเอียดระบบต่าง ๆ เช่น PageSize, Max Children, Open Files ฯลฯ |
| linuxstat :: sysinfo | ใช้โดยโมดูล Linuxstat อื่น ๆ การเข้าถึงข้อมูลได้เร็วขึ้นเช่น TotalRam, FreeRam, TotalHigh, Load เฉลี่ย ฯลฯ |
| Linuxstat :: Thermal | สถานะความร้อนของระบบข้อมูลที่เกี่ยวข้องกับพัดลมจำนวนเซ็นเซอร์จำนวนแฟน ฯลฯ |
| Linuxstat :: USB | ข้อมูลที่เกี่ยวข้องกับอุปกรณ์ USB ของระบบและจำนวนอื่น ๆ (การแยกวิเคราะห์ HWDATA) |
| Linuxstat :: Uname | ใช้โดยโมดูล Linuxstat อื่น ๆ ข้อมูล UNAME ของระบบใน C ซึ่งจัดทำโดยคำสั่ง uname |
| Linuxstat :: ผู้ใช้ | ข้อมูลที่เกี่ยวข้องกับผู้ใช้ต่างๆของระบบให้ชื่อผู้ใช้ปัจจุบันไดเรกทอรีโฮมไดเรกทอรี ฯลฯ |
ในการคำนวณการใช้งานปัจจุบันเราจำเป็นต้องได้รับการใช้งานสองครั้งในช่วงเวลาที่กำหนดและลบครั้งที่ 2 จากวันที่ 1 ตัวอย่างเช่นหากการดาวน์โหลดปัจจุบัน ( LinuxStat::Net.total_bytes_received ) คือ 1,000 ไบต์และถ้า 0.1 วินาทีที่ผ่านมามันเป็น 100 ไบต์นั่นหมายถึง 900 ไบต์ได้รับใน 0.1 วินาที นั่นหมายความว่าความเร็วปัจจุบันคือ 9000 ไบต์/วินาทีหรือ 9 kb/s
หากไม่มีการเลือกตั้งก็เป็นไปไม่ได้ที่จะคำนวณการใช้งานปัจจุบัน แม้ว่าการใช้งานทั้งหมดสามารถคำนวณได้ การตรวจสอบระบบก็เช่นกัน ...
ดังนั้นวิธีการเหล่านี้ต้องใช้ช่วงเวลาการสำรวจ:
พวกเขานอนหลับตามช่วงเวลาที่กำหนดแล้วแยกความแตกต่างระหว่างข้อมูล
สำหรับข้อมูลเพิ่มเติมดูที่เอกสาร 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 วินาที แต่จะไม่อัปเดตการใช้งาน CPU ในทุกวง ดังนั้นสิ่งที่คุณจะเห็นในการใช้งาน CPU ในทุก ๆ 0.5 วินาที
คุณจะเห็นเคาน์เตอร์เพิ่มขึ้นอย่างบ้าคลั่ง ซึ่งหมายความว่ามันไม่ได้รับการรอเป็นเวลา 0.5 วินาที
แต่วิธีอื่น ๆ ไม่มีความล่าช้านี้ดังนั้นในตัวอย่างนี้คุณจะสามารถเห็น "การดาวน์โหลดทั้งหมด" และ "การอัปโหลดทั้งหมด" ในเวลาจริงทันทีที่เคอร์เนล Linux อัปเดตข้อมูลและทับทิมดำเนินการลูป
เพียงเรียกใช้คำสั่ง linuxstat.rb เพื่อทดสอบวิธีการที่ใช้เวลาที่วัดเวลาในไมโครวินาที
มีวิธีที่แตกต่างกัน 6 วิธีในการนับจำนวน CPU แต่พวกเขาอยู่ที่นี่ด้วยเหตุผล!
ส่วนนี้จริง ๆ แล้ว demystifies วิธีการ
LinuxStat::CPU.count() : มันได้รับ CPU ที่กำหนดค่าไว้สำหรับระบบ มันไม่นับสำหรับ CPU hotplugged หาก 3 จาก 4 ซีพียูถูก hotplugged ออกมันจะยังคงแสดง 4 มันเรียก sysconf(_SC_NPROCESSORS_CONF)
LinuxStat::ProcessInfo.nproc(pid = $$) : [นามแฝงกับ LinuxStat::ProcessInfo.count_cpu() ]
มันส่งคืนจำนวนโปรเซสเซอร์เช่นวิธีอื่นอีก 3 วิธี โดยไม่มีข้อโต้แย้งใด ๆ มันก็เหมือนกับการวิ่ง 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() :สิ่งนี้จะส่งคืนจำนวน CPU ออนไลน์เป็นอาร์เรย์ มันไม่ได้รับผลกระทบจากชุดหรืออะไรเลย
ตัวอย่างเช่น:
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::CPU.online
=> [0, 1, 3]
โดยใช้ LinuxStat::CPU.online.count คุณจะนับ CPU ออนไลน์จริงบนระบบของคุณ
CPU จำนวน N ใด ๆ ที่สามารถรับ Hotplugged เข้าและออกได้และสิ่งนี้จะรายงานอย่างถูกต้อง
มันเพิ่งได้รับข้อมูลจาก /proc /stat; แต่ถ้ามันล้มเหลวมันจะอ่าน/sys/อุปกรณ์/ระบบ/ซีพียู/ออนไลน์และแยกวิเคราะห์ผลลัพธ์เพื่อรับอาร์เรย์
LinuxStat::CPU.count_online เป็นวิธีที่แข็งแกร่งกว่าที่นับ CPU ออนไลน์ ไม่ควรล้มเหลวมากที่สุดถ้าไม่ใช่ทุกกรณี! แต่ถ้ามันล้มเหลวด้วยเหตุผลที่น่ากลัวจริงๆมันจะกลับมาไม่มี
LinuxStat::CPU.offline() :
สิ่งนี้จะส่งคืนจำนวน CPU ออฟไลน์เป็นอาร์เรย์ มันไม่ได้รับผลกระทบจากชุดหรืออะไรเลย
ตัวอย่างเช่น:
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::CPU.offline
=> [2]
CPU จำนวน N ใด ๆ ที่สามารถรับ Hotplugged เข้าและออกได้และสิ่งนี้จะรายงานอย่างถูกต้อง
มันเพิ่งได้รับข้อมูลจาก/sys/อุปกรณ์/ระบบ/CPU/ออฟไลน์และแยกวิเคราะห์ผลลัพธ์
LinuxStat::Sysconf.processor_configured() : ฟังดูซ้ำ ๆ ! จริง ๆ แล้วนี่เขียนใน C และเรียกโดย LinuxStat::CPU.count
ความแตกต่างคือ LinuxStat::CPU.count แคชค่าคืนและวิธีนี้ไม่ได้
LinuxStat::Sysconf.processor_online() :นี่อาจส่งเสียงกลับคืนสู่ Linuxstat :: cpu.online อีกครั้ง แต่จริงๆแล้วมันไม่ใช่!
หากคุณใช้ขณะลูปอาจไม่รายงานจำนวน CPU ที่ถูกต้องทุกครั้ง
แย่ที่สุดอาจใช้เวลานานในการอัปเดตจำนวน CPU ทั้งหมด
ประโยชน์คือมันค่อนข้างเร็ว!
ส่วนใหญ่อยู่ที่นี่เพื่อความสมบูรณ์ของ 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"
เพื่อดูพื้นที่ว่างและทั้งหมดของ thumbdrive:
$ 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 ของกระบวนการปัจจุบันทับทิมเอง
ตัวอย่าง: สมมติว่าคุณต้องการดูว่า CPU 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 API โดยตรงโดยไม่มีรหัสทับทิมกลาง
ตัวอย่างเช่นเพื่อรับข้อมูลเกี่ยวกับ '/' หรือรูท:
$ 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 และ PAAs ออนไลน์อื่น ๆ ที่คุณไม่สามารถติดตั้งได้ ดังนั้นเวอร์ชัน 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 ไดเรกทอรี
บน Rails คุณสามารถใส่สิ่งนี้ (แทนที่ __dir__ ด้วย Rails.root ) ภายในสภาพแวดล้อม rb
แต่โปรดทราบว่าสามารถตั้งค่าไฟล์ได้เพียงครั้งเดียว แนะนำให้ทำเช่นนั้นในตอนต้นของแอปของคุณ
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 ให้ข้อมูลจำนวนมากในไบต์และกิโลไบต์จึงค่อนข้างน่าเบื่อที่จะแปลงพวกเขาตลอดเวลา เพื่อหลีกเลี่ยงการทำซ้ำดังกล่าวมันมาพร้อมกับโมดูล prettifybytes
ตัวอย่างเช่นการแปลงไบต์เป็นคำต่อท้ายทศนิยม:
$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"
มันสามารถรองรับค่านิยม yottabytes และ 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 สำหรับข้อมูลเพิ่มเติม
โดยทั่วไปหากวิธีการส่งคืนทั้งลอยหรือจำนวนเต็มหรือเวลามันจะส่งคืนลอยหรือจำนวนเต็มหรือเวลาในทุกกรณี แต่ถ้าสถานะไม่พร้อมใช้งานมันจะส่งคืน NIL
หากวิธีการส่งคืนแฮช / อาร์เรย์จะส่งคืนแฮช / อาร์เรย์ส่งคืน / อาร์เรย์ในทุกกรณี หากสถานะไม่พร้อมใช้งานจะส่งคืนแฮช / อาร์เรย์ที่ว่างเปล่า
หากวิธีการส่งคืนสตริงมันจะส่งคืนสตริงในทุกกรณี หากสถานะไม่พร้อมใช้งานจะส่งคืนสตริง แช่แข็งที่ ว่างเปล่า
ไม่มีการใช้งานข้อผิดพลาดใด ๆ ที่ได้รับการยกขึ้นในรันไทม์เพื่อความสะดวกในการใช้งาน
หากคุณต้องการตรวจสอบสถิติบางอย่างที่ส่งคืนจำนวนเต็มหรือลอยตัวและคุณจะได้รับคุณรู้ว่ามันไม่สามารถใช้งานได้ดังนั้นคุณจึงสามารถทำงานได้ แต่ถ้าคุณต้องการค่าจำนวนเต็มหรือค่าลอยใน 0 ถึงรูปแบบใด ๆ คุณสามารถใช้วิธี. to_i หรือ .to_f บนวัตถุไม่มีการแปลงเป็นหมายเลขแล้ว
หากมี การยก ข้อผิดพลาดบางอย่างควรรายงานว่าเป็นข้อผิดพลาด
gem linux_stat : $ bundle add linux_stat
คุณสามารถใช้ Linuxstat โดยตรงใน Rails
Linuxstat สนับสนุน Android OS แต่มันไม่ได้ทดสอบอย่างเข้มงวดในอุปกรณ์ทั้งหมดเช่นแอพ Android
แต่ใน Termux คุณสามารถเรียกใช้ Linuxstat โดยไม่ต้องเผชิญกับปัญหา โปรดทราบว่าจำนวน CPU อาจแตกต่างกันเนื่องจากคุณสมบัติ Hotplugging ดังนั้นหากคุณเห็นการเปลี่ยนแปลงจำนวน CPU ไม่มีอะไรจะทำเกี่ยวกับเรื่องนั้น
ปัญหาเกี่ยวกับการรัน Linuxstat ใน Termux ยังได้รับการต้อนรับ
ผู้ใช้อัญมณีนี้ขอให้ทำตามขั้นตอนการติดตั้งด้านบนเพื่อติดตั้งอัญมณีนี้
repo นี้มีวัตถุประสงค์เพื่อการพัฒนาเท่านั้น มันมีส่วนขยาย C ที่อาจเลวร้ายที่สุดกับแอพที่มั่นคงของคุณ การโคลนนิ่งการรวบรวมรหัสจาก repo นี้สำหรับแอพการผลิตอาจส่งความผิดพลาดและขัดข้องทั้งแอปโดยตรง
Gems on Rubygems ถูกปล่อยออกมาหลังจากการทดสอบต่าง ๆ
ดังนั้นเพียงแค่ติดตั้งอัญมณีอย่าโคลน repo นี้เพียงเพราะเวอร์ชันถูกกระแทกที่นี่ด้วยคุณสมบัติใหม่และอัญมณีไม่ได้ออกใน rubygems.org
หลังจากตรวจสอบ repo แล้วให้รวบรวมและติดตั้งอัญมณีนี้ลงในเครื่องในเครื่องของคุณด้วย bundle exec rake install
นอกจากนี้คุณยังสามารถเรียกใช้ bin/console สำหรับพรอมต์แบบโต้ตอบที่จะช่วยให้คุณสามารถทดลองได้
ในการทดสอบโมดูลทั้งหมดให้เรียกใช้ rake install จากนั้น exe/linuxstat.rb ตรวจสอบ "การทดสอบ" ด้านล่าง
เช่นเดียวกับอัญมณีอื่น ๆ สิ่งนี้ไม่มีการทดสอบเช่น RSPEC
เราขอแนะนำให้ใช้ไฟล์ exe/linuxstat.rb บนระบบ Linux ต่างๆเพื่อทดสอบ
ก่อนอื่นคุณต้องเรียกใช้งาน bundle exec rake install เพื่อรวบรวมและติดตั้งอัญมณีนี้
หากคุณต้องการทดสอบโมดูลเฉพาะให้พูด CPU เพียงแค่เรียกใช้เช่นนี้:
$ ruby exe/linuxstat.rb CPU
หรือ:
$ ruby exe/linuxstat.rb cpu
นั่นคืออาร์กิวเมนต์ที่ผ่านไม่ได้มีความอ่อนไหว แต่ถ้าอาร์กิวเมนต์ผ่านไม่สามารถใช้งานได้และผิดพลาดทันทีมันจะเรียกใช้วิธีการทั้งหมดของโมดูล ตัวอย่างเช่นคุณไม่สามารถทำได้:
$ ruby exe/linuxstat.rb upc
นี่ไม่ใช่โมดูลที่ถูกต้องและไม่สามารถเรียกใช้ได้
รายงานข้อผิดพลาดและคำขอดึงยินดีต้อนรับบน GitHub ที่ https://github.com/souravgoswami/linux_stat
อัญมณีมีให้เป็นโอเพ่นซอร์สภายใต้ข้อกำหนดของใบอนุญาต MIT