procps-rb 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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