mool 3.0.5 → 3.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +26 -169
- data/lib/mool/command.rb +35 -37
- data/lib/mool/cpu.rb +4 -4
- data/lib/mool/disk.rb +138 -72
- data/lib/mool/memory.rb +1 -1
- data/lib/mool/process.rb +2 -2
- data/lib/mool/system.rb +3 -3
- data/lib/mool/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 3b461e0aedab1998e9c0442875e2099805d2463f
|
4
|
-
data.tar.gz: c63a8eb327e217acadcbb4bb8b02a4be99790361
|
5
2
|
SHA512:
|
6
|
-
|
7
|
-
|
3
|
+
data.tar.gz: e07dd657246723cdea9f2e264f99a30c9aad65f5c783c855e3400f64ccdae36eb948754f4e432fdee4f52e42f665db983ca371ebe4f71982c8a591ad5c57cbfb
|
4
|
+
metadata.gz: 68792e1d1e4f631f2e4058eeb1e2102e45e0b4ed0cf8ebafde94709623260c48e8fc7be610e4d53ea4d6861f989e60d97c67ec208d67c13d210dfd0ca2b6753a
|
5
|
+
SHA1:
|
6
|
+
data.tar.gz: 471d44dad63f429c3572b0fa516fcb39863fe745
|
7
|
+
metadata.gz: 7657dcd7d6041995180a5ce735414dad643a57c1
|
data/README.md
CHANGED
@@ -313,50 +313,23 @@ In this case we have only one messure, but exists especial cases, where the patt
|
|
313
313
|
@pattern="urxvt">
|
314
314
|
```
|
315
315
|
### Disk
|
316
|
-
It's possible to get disk, partition or virtual device information using dev name **
|
316
|
+
It's possible to get disk, partition or virtual device information using dev name **sda**, **sda1** or virtual device such as or "**md-0**". You can check `cat /proc/partitions`.
|
317
317
|
```ruby
|
318
|
-
>> Mool::Disk.new("
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
#<Mool::Disk:0x7fdc6e266a40 @logical_name="sda1",
|
334
|
-
@total_block=262144000.0,
|
335
|
-
@devtype="partition",
|
336
|
-
@mount_point="/boot",
|
337
|
-
@swap=false,
|
338
|
-
@minor="1",
|
339
|
-
@devname="sda1",
|
340
|
-
@block_free=59062784.0,
|
341
|
-
@path="/sys/dev/block/8:1",
|
342
|
-
@major="8",
|
343
|
-
@file_system="ext4",
|
344
|
-
@unity="Bytes",
|
345
|
-
@block_used=57123840.0>
|
346
|
-
>> Mool::Disk.new("sdblvm-homelvm")
|
347
|
-
#<Mool::Disk:0x7fdc6e248658 @logical_name="sdblvm-homelvm",
|
348
|
-
@total_block=445602856960.0,
|
349
|
-
@devtype="disk",
|
350
|
-
@mount_point="/boot",
|
351
|
-
@swap=false,
|
352
|
-
@minor="3",
|
353
|
-
@devname="dm-3",
|
354
|
-
@block_free=187429210112.0,
|
355
|
-
@path="/sys/dev/block/252:3",
|
356
|
-
@major="252",
|
357
|
-
@file_system="btrfs",
|
358
|
-
@unity="Bytes",
|
359
|
-
@block_used=34269296640.0>
|
318
|
+
>> Mool::Disk.new("sda")
|
319
|
+
=> #<Mool::Disk:0x000056407745c5a0
|
320
|
+
@block_free=0.0,
|
321
|
+
@block_used=0.0,
|
322
|
+
@devname="sda",
|
323
|
+
@devtype="disk",
|
324
|
+
@free_size=0.0,
|
325
|
+
@logical_name="sda",
|
326
|
+
@major="8",
|
327
|
+
@minor="0",
|
328
|
+
@path="/sys/block/sda",
|
329
|
+
@total_block=0.0,
|
330
|
+
@total_size=0.0,
|
331
|
+
@unity="Bytes",
|
332
|
+
@used_size=0.0>
|
360
333
|
```
|
361
334
|
It's possible get all partition if the object is `@devtype="disk"`, such as:
|
362
335
|
```ruby
|
@@ -370,7 +343,7 @@ It's possible get all partition if the object is `@devtype="disk"`, such as:
|
|
370
343
|
@minor="1",
|
371
344
|
@devname="sda1",
|
372
345
|
@block_free=59062784.0,
|
373
|
-
@path="/sys/
|
346
|
+
@path="/sys/block/sda/sda1",
|
374
347
|
@major="8",
|
375
348
|
@file_system="ext4",
|
376
349
|
@unity="Bytes",
|
@@ -382,7 +355,7 @@ It's possible get all partition if the object is `@devtype="disk"`, such as:
|
|
382
355
|
@minor="2",
|
383
356
|
@devname="sda2",
|
384
357
|
@block_free=0.0,
|
385
|
-
@path="/sys/
|
358
|
+
@path="/sys/block/sda/sda2",
|
386
359
|
@major="8",
|
387
360
|
@file_system="cgroup",
|
388
361
|
@unity="Bytes",
|
@@ -394,7 +367,7 @@ It's possible get all partition if the object is `@devtype="disk"`, such as:
|
|
394
367
|
@minor="3",
|
395
368
|
@devname="sda3",
|
396
369
|
@block_free=0.0,
|
397
|
-
@path="/sys/
|
370
|
+
@path="/sys/block/sda/sda3",
|
398
371
|
@major="8",
|
399
372
|
@file_system=nil,
|
400
373
|
@unity="Bytes",
|
@@ -413,7 +386,7 @@ Otherwise it's possible too get the slaves. The slaves are virtual devices for e
|
|
413
386
|
@minor="0",
|
414
387
|
@devname="dm-0",
|
415
388
|
@block_free=9739984896.0,
|
416
|
-
@path="/sys/
|
389
|
+
@path="/sys/block/sda/sda3/holders/dm-0",
|
417
390
|
@major="252",
|
418
391
|
@file_system="ext4",
|
419
392
|
@unity="Bytes",
|
@@ -426,7 +399,7 @@ Otherwise it's possible too get the slaves. The slaves are virtual devices for e
|
|
426
399
|
@minor="1",
|
427
400
|
@devname="dm-1",
|
428
401
|
@block_free=1926668288.0,
|
429
|
-
@path="/sys/
|
402
|
+
@path="/sys/block/sda/sda3/holders/dm-1",
|
430
403
|
@major="252",
|
431
404
|
@file_system="ext4",
|
432
405
|
@unity="Bytes",
|
@@ -439,7 +412,7 @@ Otherwise it's possible too get the slaves. The slaves are virtual devices for e
|
|
439
412
|
@minor="2",
|
440
413
|
@devname="dm-2",
|
441
414
|
@block_free=5497151488.0,
|
442
|
-
@path="/sys/
|
415
|
+
@path="/sys/block/sda/sda3/holders/dm-2",
|
443
416
|
@major="252",
|
444
417
|
@file_system="ext4",
|
445
418
|
@unity="Bytes",
|
@@ -452,7 +425,7 @@ Otherwise it's possible too get the slaves. The slaves are virtual devices for e
|
|
452
425
|
@minor="3",
|
453
426
|
@devname="dm-3",
|
454
427
|
@block_free=187430152192.0,
|
455
|
-
@path="/sys/
|
428
|
+
@path="/sys/block/sda/sda3/holders/dm-3",
|
456
429
|
@major="252",
|
457
430
|
@file_system="btrfs",
|
458
431
|
@unity="Bytes",
|
@@ -461,131 +434,15 @@ Otherwise it's possible too get the slaves. The slaves are virtual devices for e
|
|
461
434
|
```
|
462
435
|
|
463
436
|
Other way is get all disk with yours parititons and slaves.
|
437
|
+
|
464
438
|
```ruby
|
465
439
|
>> Mool::Disk.all
|
466
|
-
- !ruby/object:MoolDisk
|
467
|
-
block_free: 0.0
|
468
|
-
block_used: 0.0
|
469
|
-
devname: sda
|
470
|
-
evtype: disk
|
471
|
-
file_system: ext4
|
472
|
-
logical_name: sda
|
473
|
-
major: "8"
|
474
|
-
minor: "0"
|
475
|
-
mount_point: /boot
|
476
|
-
swap: false
|
477
|
-
total_block: 500107862016.0
|
478
|
-
unity: Bytes
|
479
|
-
partitions:
|
480
|
-
- !ruby/object:MoolDisk
|
481
|
-
block_free: 59062784.0
|
482
|
-
block_used: 57123840.0
|
483
|
-
devname: sda1
|
484
|
-
devtype: partition
|
485
|
-
file_system: ext4
|
486
|
-
logical_name: sda1
|
487
|
-
major: "8"
|
488
|
-
minor: "1"
|
489
|
-
mount_point: /boot
|
490
|
-
partitions: []
|
491
|
-
path: /sys/dev/block/8:1
|
492
|
-
slaves: []
|
493
|
-
swap: false
|
494
|
-
total_block: 262144000.0
|
495
|
-
unity: Bytes
|
496
|
-
- !ruby/object:MoolDisk
|
497
|
-
block_free: 0.0
|
498
|
-
block_used: 0.0
|
499
|
-
devname: sda2
|
500
|
-
devtype: partition
|
501
|
-
file_system: cgroup
|
502
|
-
logical_name: sda2
|
503
|
-
major: "8"
|
504
|
-
minor: "2"
|
505
|
-
partitions: []
|
506
|
-
path: /sys/dev/block/8:2
|
507
|
-
slaves: []
|
508
|
-
swap: true
|
509
|
-
total_block: 1073741824.0
|
510
|
-
unity: Bytes
|
511
|
-
- !ruby/object:MoolDisk
|
512
|
-
block_free: 0.0
|
513
|
-
block_used: 0.0
|
514
|
-
devname: sda3
|
515
|
-
devtype: partition
|
516
|
-
file_system:
|
517
|
-
logical_name: sda3
|
518
|
-
major: "8"
|
519
|
-
minor: "3"
|
520
|
-
partitions: []
|
521
|
-
path: /sys/dev/block/8:3
|
522
|
-
slaves:
|
523
|
-
- !ruby/object:MoolDisk
|
524
|
-
block_free: 9739984896.0
|
525
|
-
block_used: 5232629760.0
|
526
|
-
devname: dm-0
|
527
|
-
devtype: disk
|
528
|
-
file_system: ext4
|
529
|
-
logical_name: sdblvm-rootlvm
|
530
|
-
major: "252"
|
531
|
-
minor: "0"
|
532
|
-
path: /sys/dev/block/252:0
|
533
|
-
swap: false
|
534
|
-
total_block: 32212254720.0
|
535
|
-
unity: Bytes
|
536
|
-
- !ruby/object:MoolDisk
|
537
|
-
block_free: 1926668288.0
|
538
|
-
block_used: 4227072.0
|
539
|
-
devname: dm-1
|
540
|
-
devtype: disk
|
541
|
-
file_system: ext4
|
542
|
-
logical_name: sdblvm-tmplvm
|
543
|
-
major: "252"
|
544
|
-
minor: "1"
|
545
|
-
mount_point: /boot
|
546
|
-
path: /sys/dev/block/252:1
|
547
|
-
swap: false
|
548
|
-
total_block: 4294967296.0
|
549
|
-
unity: Bytes
|
550
|
-
- !ruby/object:MoolDisk
|
551
|
-
block_free: 5497149440.0
|
552
|
-
block_used: 1951401984.0
|
553
|
-
devname: dm-2
|
554
|
-
devtype: disk
|
555
|
-
file_system: ext4
|
556
|
-
logical_name: sdblvm-varlvm
|
557
|
-
major: "252"
|
558
|
-
minor: "2"
|
559
|
-
mount_point: /boot
|
560
|
-
path: /sys/dev/block/252:2
|
561
|
-
swap: false
|
562
|
-
total_block: 16106127360.0
|
563
|
-
unity: Bytes
|
564
|
-
- !ruby/object:MoolDisk
|
565
|
-
block_free: 187430135808.0
|
566
|
-
block_used: 34268346368.0
|
567
|
-
devname: dm-3
|
568
|
-
devtype: disk
|
569
|
-
file_system: btrfs
|
570
|
-
logical_name: sdblvm-homelvm
|
571
|
-
major: "252"
|
572
|
-
minor: "3"
|
573
|
-
mount_point: /boot
|
574
|
-
path: /sys/dev/block/252:3
|
575
|
-
swap: false
|
576
|
-
total_block: 445602856960.0
|
577
|
-
unity: Bytes
|
578
|
-
swap: false
|
579
|
-
total_block: 498770927616.0
|
580
|
-
unity: Bytes
|
581
|
-
path: /sys/dev/block/8:0
|
582
|
-
slaves: []
|
583
440
|
```
|
584
441
|
|
585
442
|
Swap partition:
|
586
443
|
|
587
444
|
```ruby
|
588
|
-
>>
|
445
|
+
>> Mool::Disk.swap
|
589
446
|
#<Mool::Disk:0x7f711644d890 @file_system="cgroup",
|
590
447
|
@unity="Bytes",
|
591
448
|
@block_used=0.0,
|
@@ -593,7 +450,7 @@ Swap partition:
|
|
593
450
|
@total_block=1073741824.0,
|
594
451
|
@minor="2",
|
595
452
|
@devtype="partition",
|
596
|
-
@path="/sys/
|
453
|
+
@path="/sys/block/sda/sda2",
|
597
454
|
@swap=true,
|
598
455
|
@major="8",
|
599
456
|
@ devname="sda2",
|
data/lib/mool/command.rb
CHANGED
@@ -1,90 +1,88 @@
|
|
1
1
|
module Mool
|
2
2
|
module Command
|
3
3
|
|
4
|
-
|
4
|
+
# CPU COMMANDS
|
5
|
+
def self.cpuinfo
|
5
6
|
File.read('/proc/cpuinfo')
|
6
7
|
end
|
7
8
|
|
8
|
-
def self.
|
9
|
+
def self.mpstat
|
9
10
|
File.read('|mpstat -P ALL 1 1')
|
10
11
|
end
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
def self.dev_name_command(dev_entry)
|
17
|
-
File.read("#{dev_entry}/dev")
|
13
|
+
# DISK COMMANDS
|
14
|
+
def self.logical_name(path)
|
15
|
+
File.read("#{path}/dm/name") rescue nil
|
18
16
|
end
|
19
17
|
|
20
|
-
def self.
|
18
|
+
def self.mount
|
21
19
|
File.read('/proc/mounts')
|
22
20
|
end
|
23
21
|
|
24
|
-
def self.
|
22
|
+
def self.file_system
|
25
23
|
Dir.glob('/sys/fs/**/*')
|
26
24
|
end
|
27
25
|
|
28
|
-
def self.
|
29
|
-
File.exist?("#{path}/dm/name") ? File.read("#{path}/dm/name").chomp : nil
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.uevent_command(path)
|
26
|
+
def self.uevent(path)
|
33
27
|
File.read("#{path}/uevent")
|
34
28
|
end
|
35
29
|
|
36
|
-
def self.
|
30
|
+
def self.swap(lname = nil)
|
37
31
|
result = File.read('/proc/swaps')
|
38
32
|
lname.present? ? result[/#{lname} /] : result
|
39
33
|
end
|
40
34
|
|
41
|
-
def self.
|
42
|
-
|
35
|
+
def self.df
|
36
|
+
`POSIXLY_CORRECT=512 df`
|
43
37
|
end
|
44
38
|
|
45
|
-
def self.
|
46
|
-
Dir.glob("
|
39
|
+
def self.partitions(devname)
|
40
|
+
Dir.glob("/sys/block/#{devname}/#{devname}*")
|
47
41
|
end
|
48
42
|
|
49
|
-
def self.
|
50
|
-
Dir.glob(
|
43
|
+
def self.holders(path)
|
44
|
+
Dir.glob("#{path}/holders/*").uniq
|
51
45
|
end
|
52
46
|
|
53
|
-
def self.
|
54
|
-
|
47
|
+
def self.all_partitions
|
48
|
+
File.read('/proc/partitions')
|
55
49
|
end
|
56
50
|
|
57
|
-
def self.
|
58
|
-
File.exist?("
|
51
|
+
def self.root_block_device?(devname)
|
52
|
+
File.exist?("/sys/block/#{devname}") &&
|
53
|
+
!Dir.glob("/sys/block/#{devname}/slaves/*").present?
|
59
54
|
end
|
60
55
|
|
61
|
-
def self.
|
62
|
-
|
63
|
-
end
|
56
|
+
# def self.capacity_partition_command(path)
|
57
|
+
# File.read("#{path}/size")
|
58
|
+
# end
|
64
59
|
|
65
|
-
|
60
|
+
# MEMORY COMMANDS
|
61
|
+
def self.meminfo
|
66
62
|
File.read('/proc/meminfo')
|
67
63
|
end
|
68
64
|
|
69
|
-
|
65
|
+
# PROCESS COMMANDS
|
66
|
+
def self.ps
|
70
67
|
# `ps --no-headers -o pid,user,pcpu,pmem,rss,priority,time,stat,nice,args -A`
|
71
68
|
`ps --no-headers -o ruser,user,rgroup,group,pid,ppid,pgid,pcpu,vsz,nice,etime,time,tty,comm,args=HEADER -A`
|
72
69
|
end
|
73
70
|
|
74
|
-
def self.
|
71
|
+
def self.top
|
75
72
|
`top -c -b -n1`
|
76
73
|
end
|
77
74
|
|
78
|
-
|
75
|
+
# SYSTEM COMMANDS
|
76
|
+
def self.uname
|
79
77
|
`uname -r`.chomp
|
80
78
|
end
|
81
79
|
|
82
|
-
def self.
|
83
|
-
|
80
|
+
def self.loadavg
|
81
|
+
File.read('/proc/loadavg').chomp
|
84
82
|
end
|
85
83
|
|
86
|
-
def self.
|
87
|
-
|
84
|
+
def self.uptime
|
85
|
+
`cat /proc/uptime`.chomp
|
88
86
|
end
|
89
87
|
end
|
90
88
|
end
|
data/lib/mool/cpu.rb
CHANGED
@@ -52,7 +52,7 @@ module Mool
|
|
52
52
|
def self.cpuinfo
|
53
53
|
cpu_info = {}
|
54
54
|
|
55
|
-
mpstat = Mool::Command.
|
55
|
+
mpstat = Mool::Command.mpstat.split("\n\n")[2].split("\n").map do |i|
|
56
56
|
i.gsub(/^\S+:/, '').strip.split(/\s+/)
|
57
57
|
end
|
58
58
|
|
@@ -66,8 +66,8 @@ module Mool
|
|
66
66
|
cpu_info.merge!(core_name => res)
|
67
67
|
end
|
68
68
|
|
69
|
-
Mool::Command.
|
70
|
-
|
69
|
+
Mool::Command.cpuinfo.gsub(/([^\n])\n([^\n])/,
|
70
|
+
'\1 \2').scan(/processor\t*: (\d+).*model name\t*: (.*) stepping.*cpu cores\t*: (\d+)/).each do |v|
|
71
71
|
cpu_info[v[0]]['model_name'] = v[1]
|
72
72
|
cpu_info[v[0]]['cpu_cores'] = v[2]
|
73
73
|
end
|
@@ -76,7 +76,7 @@ module Mool
|
|
76
76
|
end
|
77
77
|
|
78
78
|
def self.processors
|
79
|
-
Mool::Command.
|
79
|
+
Mool::Command.cpuinfo.scan(/processor\t*: (\d+)/).flatten + ['all']
|
80
80
|
end
|
81
81
|
|
82
82
|
def self.all
|
data/lib/mool/disk.rb
CHANGED
@@ -16,42 +16,38 @@ module Mool
|
|
16
16
|
:total_block,
|
17
17
|
:block_used,
|
18
18
|
:block_free,
|
19
|
+
:logical_name,
|
19
20
|
:partitions,
|
20
21
|
:slaves,
|
21
22
|
:unity
|
22
23
|
|
23
|
-
def initialize(
|
24
|
-
@
|
24
|
+
def initialize(devname, path = nil)
|
25
|
+
@unity = Mool::BYTES
|
26
|
+
@devname = devname
|
25
27
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
@path = entry
|
32
|
-
break
|
33
|
-
end
|
28
|
+
@path = if path.nil?
|
29
|
+
Mool::Disk.proc_partitions_hash(@devname)[:path]
|
30
|
+
else
|
31
|
+
path
|
32
|
+
end
|
34
33
|
|
35
|
-
raise "Does't exist #{
|
34
|
+
raise "Does't exist #{devname} on #{@path}" if @path.nil? || @devname.nil?
|
35
|
+
lname = Mool::Command.logical_name(@path)
|
36
|
+
@logical_name = lname.blank? ? @devname : lname
|
36
37
|
read_uevent
|
37
|
-
logical_name
|
38
|
-
swap
|
39
38
|
capacity
|
40
|
-
@unity = Mool::BYTES
|
41
|
-
mounting_point
|
42
|
-
file_system
|
43
39
|
end
|
44
40
|
|
45
41
|
def mounting_point
|
46
42
|
@mount_point = nil
|
47
|
-
Mool::Command.
|
48
|
-
@mount_point ||= Mool::Command.
|
49
|
-
/#{@
|
43
|
+
Mool::Command.mount.include?(@devname) &&
|
44
|
+
@mount_point ||= Mool::Command.mount.scan(
|
45
|
+
/#{@devname} (\S+)/
|
50
46
|
).flatten.first
|
51
47
|
end
|
52
48
|
|
53
49
|
def file_system
|
54
|
-
files = Mool::Command.
|
50
|
+
files = Mool::Command.file_system.select do |a|
|
55
51
|
a.include?(@devname)
|
56
52
|
end
|
57
53
|
|
@@ -59,45 +55,38 @@ module Mool
|
|
59
55
|
@file_system ||= files.first.split('/')[3]
|
60
56
|
end
|
61
57
|
|
62
|
-
def logical_name
|
63
|
-
lname = Mool::Command.logical_name_command(@path)
|
64
|
-
@logical_name = lname.present? ? lname : @devname
|
65
|
-
end
|
66
|
-
|
67
58
|
def read_uevent
|
68
59
|
@major,
|
69
60
|
@minor,
|
70
61
|
@devname,
|
71
62
|
@devtype =
|
72
|
-
Mool::Command.
|
63
|
+
Mool::Command.uevent(@path).split("\n").map do |result|
|
73
64
|
result.split('=').last
|
74
65
|
end
|
75
|
-
# Mool::Command.uevent_command(@path).scan(
|
76
|
-
# /.*=(\d+)\n.*=(\d+)\n.*=(\S+)\n.*=(\w+)\n/
|
77
|
-
# ).flatten
|
78
66
|
end
|
79
67
|
|
80
68
|
def dev
|
81
69
|
@major + @minor
|
82
70
|
end
|
83
71
|
|
84
|
-
def
|
72
|
+
def disk?
|
85
73
|
@devtype == 'disk'
|
86
74
|
end
|
87
75
|
|
88
|
-
def
|
76
|
+
def partition?
|
89
77
|
@devtype == 'partition'
|
90
78
|
end
|
91
79
|
|
92
80
|
def swap
|
93
|
-
@swap ||= Mool::Command.
|
81
|
+
@swap ||= Mool::Command.swap(@devname).present?
|
94
82
|
end
|
95
83
|
|
96
84
|
def capacity
|
97
85
|
return if defined?(@total_block) && defined?(@block_used) && defined?(@block_free)
|
98
|
-
result = Mool::Command.
|
86
|
+
result = Mool::Command.df.scan(
|
99
87
|
/(#{@logical_name}|#{@devname})\s+(\d+)\s+(\d+)\s+(\d+)\s+(\S+)/
|
100
88
|
).flatten
|
89
|
+
|
101
90
|
# @total_block = Mool::Command.capacity_partition_command(@path).chomp.to_f
|
102
91
|
@total_block = result[1].to_f
|
103
92
|
@total_size = result[1].to_f * Mool::BLOCK_SIZE
|
@@ -110,26 +99,23 @@ module Mool
|
|
110
99
|
end
|
111
100
|
|
112
101
|
def partitions
|
113
|
-
return @
|
114
|
-
return [] unless
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
Mool::Disk.new(part.split('/').last)
|
102
|
+
return @cache_partitions if defined? @cache_partitions
|
103
|
+
return [] unless disk?
|
104
|
+
|
105
|
+
paths = Mool::Command.partitions(@devname)
|
106
|
+
|
107
|
+
@cache_partitions = paths.map do |path|
|
108
|
+
Mool::Disk.new(path.split('/').last, path)
|
121
109
|
end
|
122
110
|
end
|
123
111
|
|
124
112
|
def slaves
|
125
|
-
return @
|
113
|
+
return @cache_slaves if defined? @cache_slaves
|
126
114
|
|
127
|
-
|
128
|
-
File.directory?("#{entry}/slaves/#{@devname}")
|
129
|
-
end
|
115
|
+
slaves = Mool::Command.holders(@path)
|
130
116
|
|
131
|
-
@
|
132
|
-
Mool::Disk.new(
|
117
|
+
@cache_slaves = slaves.map do |slave_devname|
|
118
|
+
Mool::Disk.new(slave_devname, @path + "/holders/#{slave_devname}")
|
133
119
|
end
|
134
120
|
end
|
135
121
|
|
@@ -173,21 +159,116 @@ module Mool
|
|
173
159
|
Mool::GBYTES)
|
174
160
|
end
|
175
161
|
|
162
|
+
def self.swap
|
163
|
+
result = Mool::Command.swap.scan(%r{/.*\n\/dev\/(\S+)/}).flatten.first
|
164
|
+
Mool::Disk.new(result) unless result.nil?
|
165
|
+
end
|
166
|
+
|
167
|
+
def self.find_slaves(path, all_partitions)
|
168
|
+
slaves = Mool::Command.holders(path)
|
169
|
+
|
170
|
+
result = {}
|
171
|
+
|
172
|
+
slaves.each do |slave|
|
173
|
+
all_partitions.each do |partition|
|
174
|
+
devname = partition[3]
|
175
|
+
next unless slave.include?(devname)
|
176
|
+
all_partitions.delete(partition)
|
177
|
+
result[devname] = { path: path + "/holders/#{slave}" }
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
result
|
182
|
+
end
|
183
|
+
|
184
|
+
def self.find_partitions(disk, all_partitions)
|
185
|
+
parts = Mool::Command.partitions(disk)
|
186
|
+
|
187
|
+
result = {}
|
188
|
+
|
189
|
+
parts.each do |part|
|
190
|
+
all_partitions.each do |partition|
|
191
|
+
devname = partition[3]
|
192
|
+
next unless part.include?(devname)
|
193
|
+
all_partitions.delete(partition)
|
194
|
+
result[devname] = {
|
195
|
+
path: part,
|
196
|
+
slaves: find_slaves(part, all_partitions)
|
197
|
+
}
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
result
|
202
|
+
end
|
203
|
+
|
204
|
+
def self.find_especific_devname(obj, key)
|
205
|
+
if obj.respond_to?(:key?) && obj.key?(key)
|
206
|
+
obj[key]
|
207
|
+
elsif obj.respond_to?(:each)
|
208
|
+
r = nil
|
209
|
+
obj.find { |*a| r = find_especific_devname(a.last, key) }
|
210
|
+
r
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
def self.proc_partitions_hash(especific_devname = nil)
|
215
|
+
all_partitions = Mool::Command.all_partitions.scan(/(\d+)\s+(\d+)\s+(\d+)\s+(\S+)/)
|
216
|
+
hash_disks = {}
|
217
|
+
|
218
|
+
all_partitions.each do |partition|
|
219
|
+
if partition[3].include?('ram') || partition[3].include?('sr')
|
220
|
+
all_partitions.delete(partition)
|
221
|
+
next
|
222
|
+
end
|
223
|
+
devname = partition[3]
|
224
|
+
path = "/sys/block/#{devname}"
|
225
|
+
next unless Mool::Command.root_block_device?(devname)
|
226
|
+
all_partitions.delete(partition)
|
227
|
+
hash_disks[devname] = {
|
228
|
+
path: path,
|
229
|
+
partitions: find_partitions(devname, all_partitions),
|
230
|
+
slaves: find_slaves(path, all_partitions)
|
231
|
+
}
|
232
|
+
end
|
233
|
+
|
234
|
+
return hash_disks if especific_devname.nil?
|
235
|
+
find_especific_devname(hash_disks, especific_devname)
|
236
|
+
end
|
237
|
+
|
176
238
|
def self.all
|
177
239
|
disks = []
|
178
240
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
!real_path.include?('/sr') &&
|
183
|
-
!Mool::Command.real_path_command_exist?(real_path) &&
|
184
|
-
Mool::Command.slaves_command(real_path).empty?
|
241
|
+
proc_partitions_hash.each do |disk_name, disk_opts|
|
242
|
+
all_partitions = []
|
243
|
+
disk = Mool::Disk.new(disk_name, disk_opts[:path])
|
185
244
|
|
186
|
-
|
187
|
-
|
245
|
+
disk_opts[:partitions].map do |partition_name, partition_opts|
|
246
|
+
partition = Mool::Disk.new(
|
247
|
+
partition_name,
|
248
|
+
partition_opts[:path]
|
249
|
+
)
|
250
|
+
|
251
|
+
all_partitions << partition
|
252
|
+
|
253
|
+
partition.slaves = partition_opts[:slaves].map do |slave_name, slave_opts|
|
254
|
+
Mool::Disk.new(
|
255
|
+
slave_name,
|
256
|
+
slave_opts[:path]
|
257
|
+
)
|
258
|
+
end
|
259
|
+
end
|
188
260
|
|
189
|
-
|
190
|
-
|
261
|
+
disk.partitions = all_partitions
|
262
|
+
|
263
|
+
disk.slaves = disk_opts[:slaves].map do |slave_name, slave_opts|
|
264
|
+
Mool::Disk.new(
|
265
|
+
slave_name,
|
266
|
+
slave_opts[:path]
|
267
|
+
)
|
268
|
+
end
|
269
|
+
|
270
|
+
disks << disk
|
271
|
+
end
|
191
272
|
|
192
273
|
disks.each do |disk|
|
193
274
|
disk.partitions.each do |partition|
|
@@ -210,20 +291,5 @@ module Mool
|
|
210
291
|
|
211
292
|
disks
|
212
293
|
end
|
213
|
-
|
214
|
-
def self.swap
|
215
|
-
result = Mool::Command.swap_command.scan(%r{/.*\n\/dev\/(\S+)/}).flatten.first
|
216
|
-
Mool::Disk.new(result) unless result.nil?
|
217
|
-
end
|
218
|
-
|
219
|
-
def self.all_usable
|
220
|
-
result = Mool::Disk.all
|
221
|
-
result.each do |disk|
|
222
|
-
result += (disk.partitions +
|
223
|
-
disk.slaves +
|
224
|
-
(disk.partitions + disk.slaves).collect { |p| p.partitions + p.slaves }.flatten)
|
225
|
-
end
|
226
|
-
result.reject(&:blank?).select { |d| (d.partitions + d.slaves).blank? }
|
227
|
-
end
|
228
294
|
end
|
229
295
|
end
|
data/lib/mool/memory.rb
CHANGED
@@ -4,7 +4,7 @@ module Mool
|
|
4
4
|
attr_accessor :unity, :mem_used
|
5
5
|
|
6
6
|
def initialize
|
7
|
-
Mool::Command.
|
7
|
+
Mool::Command.meminfo.scan(/(\S+):\s+(\d+)/).each do |meminfo|
|
8
8
|
var = meminfo[0].tr('(', '_').tr(')', '').underscore
|
9
9
|
instance_variable_set(
|
10
10
|
"@#{var}",
|
data/lib/mool/process.rb
CHANGED
data/lib/mool/system.rb
CHANGED
@@ -13,8 +13,8 @@ module Mool
|
|
13
13
|
:uptime_second
|
14
14
|
|
15
15
|
def initialize
|
16
|
-
@kernel = Mool::Command.
|
17
|
-
load_avg = Mool::Command.
|
16
|
+
@kernel = Mool::Command.uname
|
17
|
+
load_avg = Mool::Command.loadavg.split(' ')
|
18
18
|
@current_loadavg = load_avg[0].to_f
|
19
19
|
@last_5min_loadavg = load_avg[1].to_f
|
20
20
|
@last_15min_loadavg = load_avg[2].to_f
|
@@ -23,7 +23,7 @@ module Mool
|
|
23
23
|
# Number of kernel scheduling entities that currently exist on the system
|
24
24
|
@total_thread_entities = load_avg[3].split('/').last.to_i
|
25
25
|
@last_pid_process_created = load_avg[4].to_i
|
26
|
-
time = Mool::Command.
|
26
|
+
time = Mool::Command.uptime.split(' ').first.to_f
|
27
27
|
mm, ss = time.divmod(60)
|
28
28
|
hh, mm = mm.divmod(60)
|
29
29
|
dd, hh = hh.divmod(24)
|
data/lib/mool/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- g.edera
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2018-04-
|
12
|
+
date: 2018-04-10 00:00:00 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|