Eyecandy HTML 버전을 읽으려면 Linux_stat를 방문하십시오.
LinuxStat을 사용하면 Linux 시스템의 상태를 읽을 수 있습니다. CPU 통계 및 사용법, 메모리 통계 및 사용법, 스왑 통계 및 사용법, 배터리 사용, BIOS 정보, 커널 세부 사항, 로컬 IP, OS 세부 정보 및 구문 분석 OS 릴리스 + LSB 릴리스 등을 보여줄 수 있습니다.
Linux에서만 작동하며 OS를 감지하는 것은이 보석 사용자에게 달려 있습니다.
| 목차 |
|---|
| 런타임 종속성 |
| 의존성을 구축하십시오 |
| 선택적 런타임 종속성 |
| 설치 |
| 용법 |
| 메모 |
| 반환 유형 |
| Ruby on Rails |
| 기계적 인조 인간 |
| 이 저장소 복제 |
| 개발 |
| 테스트 |
| 기여 |
| 특허 |
| 언어 |
# 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
Ruby 2.3.0+가있는 경우 *Amazonlinux 및 *Centos에서 Linux_stat를 실행할 수 있습니다.
# zypper install gcc ruby ruby-devel make
LinuxStat :: USB 및/또는 LinuxStat :: PCI를 사용하는 경우 공급 업체 및 제품 ID를 해독하려면 hwdata가 필요합니다.
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을 참조하십시오.
이 라인을 응용 프로그램의 보석에 추가하십시오.
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 | 파일 트리 워크 : 파일을 통과하고 자체 및 하위 파일 및 디렉토리와 관련된 데이터를 제공합니다. |
| Linuxstat :: 커널 | 시스템의 커널 관련 정보 |
| Linuxstat :: 메모리 | 시스템의 메모리 (RAM) 사용 및 기타 관련 정보 |
| linuxstat :: 마운트 | 시스템의 마운트 포인트 관련 정보 |
| linuxstat :: net | 시스템의 인터넷 사용 및 기타 정보 |
| Linuxstat :: OS | System의 OS 관련 정보 및 구문 분석 파일 |
| Linuxstat :: PCI | 시스템의 PCI 장치 관련 정보 (HWDATA의 선택적 구문 분석) |
| linuxstat :: prettifybytes | 바이트를 사람이 읽기 쉬운 형식으로 변환합니다 (KB, KIB 등) |
| Linuxstat :: Procfs | 더 빠른 액세스를 위해 C의 Proc 파일 시스템을 읽으십시오. 사용한 Accross |
| Linuxstat :: 프로세스 | 시스템의 프로세스 및 관련 정보 |
| linuxstat :: processInfo | 시스템의 단일 프로세스 CPU, 메모리 사용, CPU 시간 등 정보 |
| linuxstat :: 스왑 | 시스템의 스왑 관련 정보 |
| linuxstat :: sysconf | 다른 LinuxStat 모듈에서 사용하면 Pagesize, Max Children, Open Files 등과 같은 다양한 시스템 세부 정보를 제공합니다. |
| linuxstat :: sysinfo | 다른 LinuxStat 모듈에서 사용되며 Totalram, Freeram, Totalhigh, Load Average 등과 같은 정보에 대한 빠른 액세스. |
| Linuxstat :: 열 | 시스템의 열 상태, 팬 관련 정보, 센서 수, 팬 수 등 |
| Linuxstat :: USB | 시스템의 USB 장치 관련 정보 및 기타 카운트 (HWDATA의 선택적 구문 분석) |
| Linuxstat :: unm | 다른 LinuxStat 모듈에서 사용하는 시스템의 Uname Information은 uname 명령에 의해 제공됩니다. |
| linuxstat :: 사용자 | 시스템의 다양한 사용자 관련 정보, 현재 사용자 이름, 홈 디렉토리 등을 제공합니다. |
현재 사용량을 계산하려면 주어진 간격으로 두 가지 사용량을 얻고 1 차에서 2를 빼야합니다. 예를 들어, 현재 다운로드 ( LinuxStat::Net.total_bytes_received )가 1000 바이트이고 0.1 초 전에 100 바이트 인 경우 0.1 초 안에 900 바이트를 수신 한 것을 의미합니다. 즉, 현재 속도는 9000 바이트/s 또는 9kb/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 사용량을 업데이트하지는 않습니다. 따라서 0.5 초 간격으로 CPU 사용에서 볼 수있는 것.
또한 카운터가 미친 듯이 증가하는 것을 볼 수 있습니다. 즉, 0.5 초 동안 기다리지 않음을 의미합니다.
그러나 다른 방법에는이 지연이 없으므로이 예에서는 Linux 커널이 데이터를 업데이트하고 Ruby가 루프를 실행하자마자 "Total Download"및 "Total Upload"를 실시간으로 볼 수 있습니다.
LinuxStat.rb 명령을 실행하여 마이크로 초에서 측정 한 시간이 필요한 방법을 테스트하십시오.
CPU의 수를 계산하는 6 가지 방법이 혼란스럽게 있습니다. 그러나 그들은 이유가 있습니다!
글쎄,이 섹션은 실제로 방법을 해제합니다.
LinuxStat::CPU.count() : 시스템에 대한 구성된 CPU를 가져옵니다. 핫 플러그 CPU를 계산하지 않습니다. 4 개 중 3 개 CPU가 핫 플러그 아웃되면 여전히 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의 수를 배열로 반환합니다. TaskSet이나 그 어떤 것도 영향을받지 않습니다.
예를 들어:
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::CPU.online
=> [0, 1, 3]
LinuxStat::CPU.online.count 사용하면 시스템에서 실제 온라인 CPU를 계산하십시오.
모든 N 수의 CPU가 인기가 핫 플러그가 늘어나고이를 올바르게보고합니다.
/proc /stat에서 정보를 얻습니다. 그러나 실패하면/sys/devices/system/cpu/online을 읽고 출력을 구문 분석하여 배열을 얻습니다.
LinuxStat::CPU.count_online 온라인 CPU를 계산하는 더 강력한 방법입니다. 모든 경우가 아니라면 대부분의 경우 실패하지 않아야합니다! 그러나 그것이 정말로 으스스한 이유로 실패한다면, 그것은 nil이 되돌아 갈 것입니다.
LinuxStat::CPU.offline() :
오프라인 CPU의 수를 배열로 반환합니다. TaskSet이나 그 어떤 것도 영향을받지 않습니다.
예를 들어:
irb(main):001:0> require 'linux_stat'
=> true
irb(main):002:0> LinuxStat::CPU.offline
=> [2]
모든 N 수의 CPU가 인기가 핫 플러그가 늘어나고이를 올바르게보고합니다.
/sys/devices/system/cpu/offline에서 정보를 가져오고 출력을 구문 분석합니다.
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"
썸 드라이브의 무료 및 총 공간을 보려면 :
$ 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는 프로세스의 프로세스 ID를 포함하는 인수를 취할 수 있습니다. 기본적으로 $$ 또는 현재 프로세스의 PID, Ruby, 자체입니다.
예 : CPU 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 모듈은 실제로/usr/share/hwdata/에있는 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')
./hwdata 디렉토리 아래에 pci.ids 및 usb.ids 가 있다고 가정합니다.
레일에서는 환경 내부에 이것 ( __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는 바이트와 킬로바이트로 많은 데이터를 제공하기 때문에 항상 변환하는 것이 매우 지루합니다. 이러한 복제를 피하기 위해 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이 반환됩니다.
메소드가 해시 / 배열을 반환하면 모든 경우에 리턴 해시 / 배열을 반환합니다. 상태를 사용할 수 없으면 빈 해시 / 어레이를 반환합니다.
메소드가 문자열을 반환하면 모든 경우에 리턴 문자열이 반환됩니다. 상태를 사용할 수 없으면 빈 냉동 문자열을 반환합니다.
사용 편의성을 위해 런타임에서 제기되는 오류를 구현하지 않습니다.
정수 나 부유물을 반환하는 통계를 확인해야하고 NIL을 얻지 못하면 사용할 수 없다는 것을 알 수 있으므로 그에 따라 작업 할 수 있습니다. 그러나 정수 또는 플로트 값이 0에서 어떤 형식 으로든 필요한 경우 객체에서 .to_i 또는 .to_f 메소드를 사용할 수 있습니다. NIL은 숫자로 변환됩니다.
일부 오류가 발생 하면 버그로보고해야합니다.
gem linux_stat 추가하십시오 : $ bundle add linux_stat
LinuxStat를 레일에서 직접 사용할 수 있습니다.
LinuxStat는 Android OS를 지원합니다. 그러나 Android 앱과 같은 모든 장치에서 엄격하게 테스트되지는 않습니다.
그러나 Termux에서는 문제에 직면하지 않고 LinuxStat를 실행할 수 있습니다. HotPlugging 기능으로 인해 CPU 수가 다를 수 있습니다. 따라서 CPU 카운트 변경이 변경되면 실제로는 할 일이 없습니다.
Termux에서 LinuxStat 실행에 관한 문제도 환영받습니다.
이 보석 사용자는 위의 설치 단계를 따라이 보석을 설치해야합니다.
이 저장소는 개발 목적을위한 것입니다. 안정적인 앱에 최악의 기능을 수행 할 수있는 C 확장 기능이 있습니다. 프로덕션 앱 의이 레포에서 코드를 컴파일하면 전체 앱을 직접 충돌시킬 수 있습니다.
Rubygem의 보석은 다양한 테스트 후에 출시됩니다.
따라서 보석을 설치하고 버전이 새로운 기능으로 여기에 부딪 히고 보석이 rubygems.org에 나오지 않기 때문에이 repo를 복제하지 마십시오.
repo를 확인한 후 bundle exec rake install 보석을 로컬 컴퓨터에 컴파일하고 설치하십시오.
실험 할 수있는 대화식 프롬프트를 위해 bin/console 실행할 수도 있습니다.
모든 모듈을 테스트하려면 rake install 실행 한 다음 exe/linuxstat.rb 실행하십시오. 아래의 "테스트"도 확인하십시오.
다른 보석과 마찬가지로 이것은 RSPEC와 같은 테스트가 없습니다.
다양한 Linux 시스템에서 Exe/LinuxStat.rb 파일을 사용하여 테스트하는 것이 좋습니다.
먼저이 보석을 컴파일하고 설치하려면 bundle exec rake install 실행해야합니다.
특정 모듈을 테스트 해야하는 경우 CPU를 말하면 다음과 같이 실행하십시오.
$ ruby exe/linuxstat.rb CPU
또는:
$ ruby exe/linuxstat.rb cpu
즉, 통과 된 주장은 대소 문자에 민감하지 않습니다. 그러나 통과 된 인수를 사용할 수없고 완전히 잘못된 경우 모든 모듈 메소드가 실행됩니다. 예를 들어, 당신은 할 수 없습니다 :
$ ruby exe/linuxstat.rb upc
이것은 유효한 모듈이 아니며 실행할 수 없습니다.
https://github.com/souravgoswami/linux_stat (https://github.com/souravgoswami/linux_stat)에서 버그 보고서 및 풀 요청은 환영합니다.
보석은 MIT 라이센스의 조건에 따라 오픈 소스로 제공됩니다.