Module: SysViewer::Osx
- Defined in:
- lib/sys_viewer/osx.rb
Instance Method Summary collapse
- #cpu_utilization ⇒ Object
- #disk_usage ⇒ Object
- #load_average ⇒ Object
- #memory_info ⇒ Object
- #network_traffic ⇒ Object
- #uptime ⇒ Object
Instance Method Details
#cpu_utilization ⇒ Object
86 87 88 89 90 91 92 93 |
# File 'lib/sys_viewer/osx.rb', line 86 def cpu_utilization stdin, stdout, stderr = Open3.popen3('iostat') lines = stdout.readlines values = lines[2].split { user: values[3].to_f, system: values[4].to_f, idle: values[5].to_f } end |
#disk_usage ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/sys_viewer/osx.rb', line 33 def disk_usage stdin, stdout, stderr = Open3.popen3('df', '-h') volumes = stdout.readlines volumes.shift # remove header data = {} volumes.each do |volume| columns = { total: '', used: '', free: '', percent: '', path: '' } line = volume.split(/[ ]{2,}/, 6) columns[:total] = line[1] columns[:used] = line[2] columns[:free] = line[3] columns[:percent] = line[4] columns[:path] = line[5].gsub(/[\n]+/,'') data[line[0]] = columns end data end |
#load_average ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/sys_viewer/osx.rb', line 74 def load_average stdin, stdout, stderr = Open3.popen3('sysctl', 'vm.loadavg') loadavg = { minute: 0, five_minutes: 0, fifteen_minutes: 0, cores: 0 } loadavg[:minute], loadavg[:five_minutes], loadavg[:fifteen_minutes] = stdout.gets.scan(/\d+.\d+/).map { |value| value.to_f } stdin, stdout, stderr = Open3.popen3('sysctl', '-n', 'hw.logicalcpu') loadavg[:cores] = stdout.gets.to_i loadavg end |
#memory_info ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/sys_viewer/osx.rb', line 4 def memory_info memory = { memtotal: 0, memused: 0, memfree: 0, swaptotal: 0, swapused: 0, swapfree: 0 } stdin, stdout, stderr = Open3.popen3('sysctl', '-n', 'hw.memsize') memory[:memtotal] = stdout.gets.to_f / 1048576 stdin, stdout, stderr = Open3.popen3('vm_stat') vm_lines = stdout.readlines vm_lines.pop # remove footer vm_lines.shift # remove header vm_stats = {} vm_lines.each do |line| element = line.split(/:[\s]+/) vm_stats[element[0]] = element[1].gsub!(/.[\n]+/, '').to_f * 4096 end memory[:memfree] = vm_stats['Pages free'] / 1048576 + vm_stats['Pages speculative'] / 1048576 memory[:memused] = memory[:memtotal] - memory[:memfree] stdin, stdout, stderr = Open3.popen3('sysctl', '-n', 'vm.swapusage') swap_info = stdout.gets.split(/[\s]+/) memory[:swaptotal] = swap_info[2].gsub('M', '').to_f memory[:swapused] = swap_info[5].gsub('M', '').to_f memory[:swapfree] = swap_info[8].gsub('M', '').to_f memory end |
#network_traffic ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/sys_viewer/osx.rb', line 95 def network_traffic stdin, stdout, stderr = Open3.popen3('sar', '-n', 'DEV', '1', '1') data = stdout.readlines 4.times { data.shift } # remove first 4 lines network_data = {} data.each do |line| if line.start_with?("Average") values = line.split # Ipkts/s - Packets received per second # Ibytes/s - Bytes received per second # Opkts/s - Packets transmitted per second # Obytes/s - Bytes tranmitted per second network_data[values[1]] = { received: values[3].to_f, transmitted: values[5].to_f } end end network_data end |
#uptime ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/sys_viewer/osx.rb', line 56 def uptime stdin, stdout, stderr = Open3.popen3('sysctl', 'kern.boottime') uptime = stdout.gets.scan(/sec = \d+/)[0].split('=')[1].strip.to_f uptime = Time.now.to_i - uptime minute = 60 hour = minute * 60 day = hour * 24 days = (uptime / day).to_i hours = ((uptime % day) / hour).to_i minutes = ((uptime % hour) / minute).to_i seconds = (uptime % minute).to_i { days: days, hours: hours, minutes: minutes, seconds: seconds } end |