procps-rb 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c976117d306543a0b1edc526541e00095305a4be
4
- data.tar.gz: 3374e2058c9a1b07c867945bef45daaeb02d4173
3
+ metadata.gz: 6339640587de9a0b986ab9e619ce79e05103e977
4
+ data.tar.gz: 9015b5ef02de0533655ea8374e76e92459bd48a8
5
5
  SHA512:
6
- metadata.gz: d7845dbf401dd46514182ecf18e3b7b7b5ff76ad32a2db33456a8cff96d60b5012bd29532c1179cdc9a49b2344894b36aafa8eb631ae0b16d7b381c9725f66b7
7
- data.tar.gz: 310656840e0238caf054e823959f5249b242ff1f406581b663a9ca97411bc384c1d3fb00da939c24dad9e242ca664285ae37e23f1e2498e54686fb829ddb0530
6
+ metadata.gz: 7ca8462293275665111926cf580431df168d76d176c65e770d17ac1b7afd1fa34cd1834f46a48bbbc79ab27a4888366bdfeb875b653532f59f785db362e7f3bc
7
+ data.tar.gz: 2271e315406bed2f3a119baa1e32c277a9d49e97178d095a1100433c9daba14c0fa3f9445d6e207d62e1b19614669df0072a0ba5a8631a1de3f7f202e881cd64
@@ -0,0 +1,62 @@
1
+ require 'procps/column'
2
+ require 'procps/column_types/command'
3
+ require 'procps/column_types/memsize'
4
+
5
+ module Procps
6
+ class PS
7
+ Address = -> (base = 10, null: "-".freeze) { -> (v) { v.is_a?(String) ? v == null ? nil : v.to_i(base) : v } }
8
+ Address_10 = Address[]
9
+ Address_16 = Address[16]
10
+
11
+ define_column :cmd, "CMD", Command
12
+ define_column :comm, "COMMAND"
13
+ define_column :command, "COMMAND", Command
14
+ define_column :gid, &:to_i
15
+ define_column :group
16
+ define_column :ni, &:to_i
17
+ define_column :nlwp, &:to_i
18
+ define_column :nwchan, "WCHAN", Address_16
19
+ define_column :pcpu, "%CPU", &:to_f
20
+ define_column :pgid, &:to_i
21
+ define_column :pgrp, "PGRP", &:to_i
22
+ define_column :pid, &:to_i
23
+ define_column :pmem, "%MEM", &:to_f
24
+ define_column :ppid, &:to_i
25
+ define_column :rgid, &:to_i
26
+ define_column :rgroup
27
+ define_column :rss, "RSS", Memsize
28
+ define_column :rtprio, "RTPRIO", Address_10
29
+ define_column :ruid, &:to_i
30
+ define_column :ruser
31
+ define_column :s
32
+ define_column :sess, &:to_i
33
+ define_column :sgid, &:to_i
34
+ define_column :sgroup
35
+ define_column :sid, &:to_i
36
+ define_column :size, &:to_i
37
+ define_column :start, "STARTED"
38
+ define_column :start_time
39
+ define_column :stat
40
+ define_column :tgid, &:to_i
41
+ define_column :sz, &:to_i
42
+ define_column :thcount, "THCNT", &:to_i
43
+ define_column :tid, &:to_i
44
+ define_column :time
45
+ define_column :tname, "TTY"
46
+ define_column :tt
47
+ define_column :user
48
+ define_column :uid, &:to_i
49
+ define_column :userns, &:to_i
50
+
51
+ alias_column :'%cpu', :pcpu
52
+ alias_column :'%mem', :pmem
53
+ alias_column :nice, :ni
54
+ alias_column :args, :command
55
+ alias_column :cputime, :time
56
+ alias_column :rssize, :rss
57
+ alias_column :rsz, :rss
58
+ alias_column :state, :s
59
+ alias_column :tty, :tt
60
+ alias_column :uname, :user
61
+ end
62
+ end
@@ -0,0 +1,78 @@
1
+ require "procps/column_types/scheduling_policy"
2
+
3
+ module Procps
4
+ class PS
5
+ define_column :blocked
6
+ define_column :bsdstart, "START"
7
+ define_column :bsdtime, "TIME"
8
+ define_column :c, &:to_f
9
+ define_column :caught
10
+ define_column :cgroup
11
+ define_column :cls, "CLS", SchedulingPolicy
12
+ define_column :cp do |v|
13
+ v.to_f / 100_0
14
+ end
15
+ define_column :eip
16
+ define_column :esp
17
+ define_column :egid, &:to_i
18
+ define_column :egroup
19
+ define_column :etime, "ELAPSED"
20
+ define_column :etimes, "ELAPSED", &:to_i
21
+ define_column :f, &:to_i
22
+ define_column :fgid, &:to_i
23
+ define_column :fgroup
24
+ define_column :fname
25
+ define_column :fuid, &:to_i
26
+ define_column :fuser
27
+ define_column :ignored
28
+ define_column :ipcns, "IPCNS", Address_10
29
+ define_column :label
30
+ define_column :lstart, "STARTED"
31
+ define_column :lsession
32
+ define_column :lwp, &:to_i
33
+ define_column :machine
34
+ define_column :maj_flt
35
+ define_column :min_flt
36
+ define_column :mntns, "MNTNS", Address_10
37
+ define_column :netns, "NETNS", Address_10
38
+ define_column :ouid, "OWNER", &:to_i
39
+ define_column :pending
40
+ define_column :pidns, &:to_i
41
+ define_column :policy, "POL", SchedulingPolicy
42
+ define_column :pri, &:to_i
43
+ define_column :psr, &:to_i
44
+ define_column :sched, "SCH" do |v|
45
+ SchedulingPolicy.(v.to_i)
46
+ end
47
+ define_column :seat
48
+ define_column :suid, &:to_i
49
+ define_column :suser
50
+ define_column :supgid, &:to_i
51
+ define_column :supgrp
52
+ define_column :sgi_p, "SGI_P", Address[null: "*".freeze]
53
+ define_column :slice
54
+ define_column :spid, &:to_i
55
+ define_column :stackp, "STACKP", Address_16
56
+ define_column :svgid, &:to_i
57
+ define_column :svuid, &:to_i
58
+ define_column :tpgid, &:to_i
59
+ define_column :ucmd, "CMD"
60
+ define_column :unit
61
+ define_column :utsns, &:to_i
62
+ define_column :uunit
63
+ define_column :vsz, Memsize
64
+
65
+ alias_column :class, :cls
66
+ alias_column :flag, :f
67
+ alias_column :flags, :f
68
+ alias_column :sig, :pending
69
+ alias_column :sig_block, :blocked
70
+ alias_column :sigmask, :blocked
71
+ alias_column :sig_catch, :caught
72
+ alias_column :sigcatch, :caught
73
+ alias_column :sig_ignore, :ignored
74
+ alias_column :sigignore, :ignored
75
+ alias_column :ucomm, :comm
76
+ alias_column :vsize, :vsz
77
+ end
78
+ end
data/lib/procps/ps.rb CHANGED
@@ -1,11 +1,30 @@
1
- require 'procps/ps/columns'
2
1
  require 'procps/ps/command_builder'
3
2
 
4
3
  module Procps
4
+ # By default it loads only base columns.
5
+ # To load extra columns require <tt>procps/ps/extra_columns</tt> after the gem is loaded.
6
+ #
7
+ # You can also define custom columns with the Procps::PS.define_column method.
5
8
  class PS
6
9
  DEFAULT_BIN_PATH = "/usr/bin/ps"
7
10
  DEFAULT_COLUMNS = %i(pid rss pcpu)
8
11
 
12
+ def self.columns
13
+ @@columns ||= {}
14
+ end
15
+
16
+ # Define a column (see base columns in <tt>lib/procps/ps/base_columns.rb
17
+ # </tt> and extra columns in <tt>lib/procps/ps/extra_columns.rb</tt>)
18
+ def self.define_column(name, header = nil, cast = nil, &cast_block)
19
+ header ||= name.to_s.upcase
20
+ columns[name.downcase.to_sym] = Column.new(header, cast, &cast_block)
21
+ end
22
+
23
+ # Creates an alias to a column
24
+ def self.alias_column(new_name, old_name)
25
+ columns[new_name.to_sym] = old_name.to_sym
26
+ end
27
+
9
28
  attr_accessor :bin_path, :options, :modifiers
10
29
 
11
30
  # Creates a Procps::PS object. Takes an argument with a bin path to ps command.
@@ -148,4 +167,4 @@ module Procps
148
167
  process
149
168
  end
150
169
  end
151
- end
170
+ end
@@ -1,3 +1,3 @@
1
1
  module Procps
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/procps.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "procps/ps"
2
+ require "procps/ps/base_columns"
2
3
  require "procps/version"
3
4
 
4
5
  module Procps
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: procps-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Semenov
@@ -60,8 +60,9 @@ files:
60
60
  - lib/procps/column_types/memsize.rb
61
61
  - lib/procps/column_types/scheduling_policy.rb
62
62
  - lib/procps/ps.rb
63
- - lib/procps/ps/columns.rb
63
+ - lib/procps/ps/base_columns.rb
64
64
  - lib/procps/ps/command_builder.rb
65
+ - lib/procps/ps/extra_columns.rb
65
66
  - lib/procps/version.rb
66
67
  - procps-rb.gemspec
67
68
  homepage: https://github.com/estum/procps-rb
@@ -1,138 +0,0 @@
1
- require 'procps/column'
2
- require 'procps/column_types/command'
3
- require 'procps/column_types/memsize'
4
- require 'procps/column_types/scheduling_policy'
5
-
6
- module Procps
7
- class PS
8
- Address = -> (base = 10, null: "-".freeze) { -> (v) { v.is_a?(String) ? v == null ? nil : v.to_i(base) : v } }
9
- Address_10 = Address[]
10
- Address_16 = Address[16]
11
-
12
- @@columns = {
13
- :blocked => Column.new("BLOCKED"),
14
- :bsdstart => Column.new("START"),
15
- :bsdtime => Column.new("TIME"),
16
- :c => Column.new("C", &:to_f),
17
- :caught => Column.new("CAUGHT"),
18
- :cgroup => Column.new("CGROUP"),
19
- :cls => Column.new("CLS", SchedulingPolicy),
20
- :cmd => Column.new("CMD", Command),
21
- :comm => Column.new("COMMAND"),
22
- :command => Column.new("COMMAND", Command),
23
- :cp => Column.new("CP") { |v| v.to_f / 100_0 }, # tenths of a percent
24
- :egid => Column.new("EGID", &:to_i),
25
- :egroup => Column.new("EGROUP"),
26
- :eip => Column.new("EIP"),
27
- :esp => Column.new("ESP"),
28
- :etime => Column.new("ELAPSED"),
29
- :etimes => Column.new("ELAPSED", &:to_i),
30
- :f => Column.new("F", &:to_i),
31
- :fgid => Column.new("FGID", &:to_i),
32
- :fgroup => Column.new("FGROUP"),
33
- :fname => Column.new("FNAME"),
34
- :fuid => Column.new("FUID", &:to_i),
35
- :fuser => Column.new("FUSER"),
36
- :gid => Column.new("GID", &:to_i),
37
- :group => Column.new("GROUP"),
38
- :ignored => Column.new("IGNORED"),
39
- :ipcns => Column.new("IPCNS", Address_10),
40
- :label => Column.new("LABEL"),
41
- :lstart => Column.new("STARTED"),
42
- :lsession => Column.new("SESSION"),
43
- :lwp => Column.new("LWP", &:to_i),
44
- :machine => Column.new("MACHINE"),
45
- :maj_flt => Column.new("MAJFLT"),
46
- :min_flt => Column.new("MINFLT"),
47
- :mntns => Column.new("MNTNS", Address_10),
48
- :netns => Column.new("NETNS", Address_10),
49
- :ni => Column.new("NI", &:to_i),
50
- :nlwp => Column.new("NLWP", &:to_i),
51
- :nwchan => Column.new("WCHAN", Address_16),
52
- :ouid => Column.new("OWNER", &:to_i),
53
- :pending => Column.new("PENDING"),
54
- :pcpu => Column.new("%CPU", &:to_f),
55
- :pgid => Column.new("PGID", &:to_i),
56
- :pgrp => Column.new("PGRP", &:to_i),
57
- :pid => Column.new("PID", &:to_i),
58
- :pidns => Column.new("PIDNS", &:to_i),
59
- :pmem => Column.new("%MEM", &:to_f),
60
- :policy => Column.new("POL", SchedulingPolicy),
61
- :ppid => Column.new("PPID", &:to_i),
62
- :pri => Column.new("PRI", &:to_i),
63
- :psr => Column.new("PSR", &:to_i),
64
- :rgid => Column.new("RGID", &:to_i),
65
- :rgroup => Column.new("RGROUP"),
66
- :rss => Column.new("RSS", Memsize),
67
- :rtprio => Column.new("RTPRIO", Address_10),
68
- :ruid => Column.new("RUID", &:to_i),
69
- :ruser => Column.new("RUSER"),
70
- :s => Column.new("S"),
71
- :sched => Column.new("SCH") { |v| SchedulingPolicy.(v.to_i) },
72
- :seat => Column.new("SEAT"),
73
- :sess => Column.new("SESS", &:to_i),
74
- :sgi_p => Column.new("SGI_P", Address[null: "*".freeze]),
75
- :sgid => Column.new("SGID", &:to_i),
76
- :sgroup => Column.new("SGROUP"),
77
- :sid => Column.new("SID", &:to_i),
78
- :size => Column.new("SIZE", &:to_i),
79
- :slice => Column.new("SLICE"),
80
- :spid => Column.new("SPID", &:to_i),
81
- :stackp => Column.new("STACKP", Address_16),
82
- :start => Column.new("STARTED"),
83
- :start_time => Column.new("START_TIME"),
84
- :stat => Column.new("STAT"),
85
- :suid => Column.new("SUID", &:to_i),
86
- :suser => Column.new("SUSER"),
87
- :supgid => Column.new("SUPGID", &:to_i),
88
- :supgrp => Column.new("SUPGRP"),
89
- :svgid => Column.new("SVGID", &:to_i),
90
- :svuid => Column.new("SVUID", &:to_i),
91
- :sz => Column.new("SZ", &:to_i),
92
- :tgid => Column.new("TGID", &:to_i),
93
- :thcount => Column.new("THCNT", &:to_i),
94
- :tid => Column.new("TID", &:to_i),
95
- :time => Column.new("TIME"),
96
- :tname => Column.new("TTY"),
97
- :tpgid => Column.new("TPGID", &:to_i),
98
- :tt => Column.new("TT"),
99
- :ucmd => Column.new("CMD"),
100
- :uid => Column.new("UID", &:to_i),
101
- :unit => Column.new("UNIT"),
102
- :user => Column.new("USER"),
103
- :userns => Column.new("USERNS", &:to_i),
104
- :utsns => Column.new("UTSNS", &:to_i),
105
- :uunit => Column.new("UUNIT"),
106
- :vsz => Column.new("VSZ", Memsize)
107
- }.tap do |cols|
108
- cols.update(
109
- :'%cpu' => cols.fetch(:pcpu),
110
- :'%mem' => cols.fetch(:pmem),
111
- :args => cols.fetch(:command),
112
- :class => cols.fetch(:cls),
113
- :cputime => cols.fetch(:time),
114
- :flag => cols.fetch(:f),
115
- :flags => cols.fetch(:f),
116
- :nice => cols.fetch(:ni),
117
- :rssize => cols.fetch(:rss),
118
- :rsz => cols.fetch(:rss),
119
- :sig => cols.fetch(:pending),
120
- :sig_block => cols.fetch(:blocked),
121
- :sigmask => cols.fetch(:blocked),
122
- :sig_catch => cols.fetch(:caught),
123
- :sigcatch => cols.fetch(:caught),
124
- :sig_ignore => cols.fetch(:ignored),
125
- :sigignore => cols.fetch(:ignored),
126
- :state => cols.fetch(:s),
127
- :tty => cols.fetch(:tt),
128
- :ucomm => cols.fetch(:comm),
129
- :uname => cols.fetch(:user),
130
- :vsize => cols.fetch(:vsz)
131
- )
132
- end
133
-
134
- def self.columns
135
- @@columns
136
- end
137
- end
138
- end