sys-proctable 1.2.0 → 1.2.1

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
- SHA1:
3
- metadata.gz: 00ee6aa318ca856d8b83e26685289b1c3eae3817
4
- data.tar.gz: 4af42eeef3367f56b8c6ec9383393ba16900af3e
2
+ SHA256:
3
+ metadata.gz: cb96b1cfb746706244c26f2ce85f54740163cb9f9174237fd06767849ca62cb8
4
+ data.tar.gz: f8b0b6d47efb86e64a630331a3408deb5baf2a6c8b1256bf55a0bad76f9c17c7
5
5
  SHA512:
6
- metadata.gz: 7ce22a2caf51c2909024450fad56c15f3ca4d895524b70b6cc7584da8786055fb8a1b2c9b7fe80aadb88d18065d1470368c51d1b0dbb7ccbf34318ab2144d487
7
- data.tar.gz: d81c7f01727cf1521374410b9c473c82b6d5b04d92315d5e4427346c91eead836f43f70b46979e1df6f3eaa858a1677e95e2141bfae737cb75691aee507b77b3
6
+ metadata.gz: 72bf0ffb98c4362deeb9506c6d2f50147c327fe0862575b06f5de1d342e6c9b3a7d5a0fd9a51d69e15cd2f1f68f8d8a9d67ceba12b8a8350f123498b759c4ac0
7
+ data.tar.gz: 9acdc748cffeee40be36cff671b9f8057ec7fd9f416609f326882c28dfa5b9dd4fddba07a56ed9d64fe9d27b2743c242a3a9b04f902a2f9c3b442ab4ca38a2e1
Binary file
data.tar.gz.sig CHANGED
Binary file
data/CHANGES CHANGED
@@ -1,6 +1,15 @@
1
+ == 1.2.1 - 8-Jun-2018
2
+ * The code for OSX is now more efficient when a pid argument is provided.
3
+ Thanks go to Nick LaMuro for his efforts.
4
+ * Added metadata to the gemspec.
5
+ * Switched the README (now README.md) to markdown format. Thanks go to
6
+ Tim Meusel for the update.
7
+ * Updated the cert. Should be good for ten years now.
8
+
1
9
  == 1.2.0 - 20-Feb-2018
2
10
  * There has been an API change. The ProcTable.ps method now uses keyword
3
11
  arguments. The 'pid' option is universal, the rest depend on the platform.
12
+ As part of this change, support for Ruby < 2.0 has been dropped.
4
13
  * Support for HP-UX has been dropped, both because it was the last remaining
5
14
  platform that still used C code, and because it's basically a dead platform.
6
15
  * There are no more platform-specific gems. There is now a single gem that
@@ -0,0 +1,158 @@
1
+ # sys-proctable
2
+
3
+ ## Description
4
+
5
+ A Ruby interface for gathering process information.
6
+
7
+ ## Prerequisites
8
+
9
+ * RSpec 3.x (development only)
10
+
11
+ ## Supported Platforms
12
+
13
+ * Windows 2000 or later
14
+ * Linux 2.6+
15
+ * FreeBSD
16
+ * Solaris 8+
17
+ * OS X 10.7+
18
+ * AIX 5.3+
19
+
20
+ ## Installation
21
+
22
+ ```sh
23
+ gem install sys-proctable
24
+ ```
25
+
26
+ For version 1.1.5 or earlier, you may need to specify a platform in some cases. For example:
27
+
28
+ ```sh
29
+ gem install sys-proctable --platform mswin32 # Windows
30
+ gem install sys-proctable --platform sunos # Solaris
31
+ gem install sys-proctable --platform linux # Linux
32
+ gem install sys-proctable --platform freebsd # FreeBSD
33
+ gem install sys-proctable --platform darwin # OS X
34
+ ```
35
+
36
+ ## Synopsis
37
+
38
+ ```ruby
39
+ require 'sys/proctable'
40
+ include Sys
41
+
42
+ # Everything
43
+ ProcTable.ps{ |p|
44
+ puts p.pid.to_s
45
+ puts p.comm
46
+ # ...
47
+ }
48
+
49
+ # Just one process
50
+ s = ProcTable.ps(pid: 2123)
51
+ puts s.pid.to_s
52
+ puts s.comm
53
+ # ...
54
+
55
+ # Return the results as an array of ProcTableStructs
56
+ a = ProcTable.ps
57
+ a.each do |p|
58
+ puts p.pid
59
+ # ...
60
+ end
61
+ ```
62
+
63
+ ## Notes
64
+
65
+ Various platforms support different options. Mostly this is to let you
66
+ skip the collection of certain bits of information in order to improve
67
+ speed and/or reduce memory. For example on Linux you can do this to
68
+ skip the collection of smaps information:
69
+
70
+ ```ruby
71
+ Sys::ProcTable.ps(smaps: false)
72
+ ```
73
+
74
+ Windows users may send a host name to get process information from a
75
+ different host. This relies on the WMI service running.
76
+
77
+ ```ruby
78
+ Sys::ProcTable.ps(host: some_host)
79
+ ```
80
+
81
+ ## Known Issues
82
+
83
+ ### FreeBSD
84
+
85
+ A kvm interface is used. That means the owner of the process using the
86
+ sys-proctable library needs to be a member of the kvm group (or root).
87
+
88
+ ### Bundler
89
+
90
+ For version 1.1.5 or earlier, Bundler seems to have trouble installing the
91
+ proper gem because of the platform specific gem names. To deal with that,
92
+ run this command first:
93
+
94
+ ```sh
95
+ bundle config specific_platform true
96
+ ```
97
+
98
+ You should not have to do this for version 1.2.0 or later.
99
+
100
+ ### Solaris
101
+
102
+ The cmdline member on Solaris is limited to 80 characters unless you (or
103
+ your program) own the process. This is a Solaris design flaw/feature.
104
+
105
+ ### OS X
106
+
107
+ The libproc interface is used. That means you will only get list of
108
+ processes that you have access to. To get a full listing, run as root.
109
+
110
+ ## Future Plans
111
+
112
+ Support for Solaris will probably be dropped in the next major release.
113
+
114
+ ## Acknowledgements
115
+
116
+ This library was originally based on the Perl module Proc::ProcessTable
117
+ by Dan Urist. Many ideas, as well as large chunks of code, were taken
118
+ from his work. So, a big THANK YOU goes out to Dan Urist.
119
+
120
+ A big thanks also goes out to Mike Hall who was very helpful with ideas,
121
+ logic and testing.
122
+
123
+ Thanks also go to Sean Chittenden for providing an account on one of his
124
+ FreeBSD machines. This is how the FreeBSD support was (initially) added.
125
+
126
+ Thanks go to James Hranicky for providing a patch that grabs name, eid,
127
+ euid, gid and guid info in the Linux version, along with some general
128
+ debugging help.
129
+
130
+ Thanks go to David Felstead for the original OS X code. Thanks also go
131
+ to Matthias Zirnstein for adding the original cmdline support for OS X.
132
+
133
+ Finally I'd like to thank all the folks who have submitted bug reports
134
+ and/or patches.
135
+
136
+ ## Help Wanted
137
+
138
+ I do not have access to all platforms. If your platform is not supported
139
+ then you will need to either submit a patch or give me a remote account
140
+ on a box with a compiler so that I can write the code.
141
+
142
+ ## More documentation
143
+
144
+ See the documentation under the 'doc' directory for more information,
145
+ including platform specific notes and issues.
146
+
147
+ ## License
148
+
149
+ Apache 2.0
150
+
151
+ ## Copyright
152
+
153
+ (C) 2003-2018 Daniel J. Berger
154
+ All Rights Reserved.
155
+
156
+ ## Author
157
+
158
+ Daniel J. Berger
@@ -174,66 +174,98 @@ module Sys
174
174
  #
175
175
  def self.ps(**kwargs)
176
176
  pid = kwargs[:pid]
177
- raise TypeError unless pid.is_a?(Numeric) if pid
177
+ thread_info = kwargs[:thread_info]
178
178
 
179
- num = proc_listallpids(nil, 0)
180
- ptr = FFI::MemoryPointer.new(:pid_t, num)
181
- num = proc_listallpids(ptr, ptr.size)
182
-
183
- raise SystemCallError.new('proc_listallpids', FFI.errno) if num == 0
184
-
185
- pids = ptr.get_array_of_int32(0, num).sort
186
- array = block_given? ? nil : []
187
-
188
- pids.each do |lpid|
189
- next unless pid == lpid if pid
179
+ if pid
180
+ raise TypeError unless pid.is_a?(Numeric)
190
181
  info = ProcTaskAllInfo.new
191
182
 
192
- nb = proc_pidinfo(lpid, PROC_PIDTASKALLINFO, 0, info, info.size)
183
+ nb = proc_pidinfo(pid, PROC_PIDTASKALLINFO, 0, info, info.size)
193
184
 
194
185
  if nb <= 0
195
186
  if [Errno::EPERM::Errno, Errno::ESRCH::Errno].include?(FFI.errno)
196
- next # Either we don't have permission, or the pid no longer exists
187
+ return # Either we don't have permission, or the pid no longer exists
197
188
  else
198
189
  raise SystemCallError.new('proc_pidinfo', FFI.errno)
199
190
  end
200
191
  end
201
192
 
202
- # Avoid potentially invalid data
203
- next if nb != info.size
193
+ return nil if nb != info.size # Invalid data
204
194
 
205
195
  struct = ProcTableStruct.new
206
196
 
207
197
  # Pass by reference
208
- get_cmd_args_and_env(lpid, struct)
209
- get_thread_info(lpid, struct, info[:ptinfo]) unless kwargs[:thread_info] == false
210
-
211
- # Chop the leading xx_ from the FFI struct members for our ruby struct.
212
- info.members.each do |nested|
213
- info[nested].members.each do |member|
214
- if info[nested][member].is_a?(FFI::StructLayout::CharArray)
215
- struct[PROC_STRUCT_FIELD_MAP[member]] = info[nested][member].to_s
198
+ get_cmd_args_and_env(pid, struct)
199
+ get_thread_info(pid, struct, info[:ptinfo]) unless thread_info == false
200
+ apply_info_to_struct(info, struct)
201
+
202
+ struct.freeze
203
+ yield struct if block_given?
204
+ struct
205
+ else
206
+ num = proc_listallpids(nil, 0)
207
+ ptr = FFI::MemoryPointer.new(:pid_t, num)
208
+ num = proc_listallpids(ptr, ptr.size)
209
+
210
+ raise SystemCallError.new('proc_listallpids', FFI.errno) if num == 0
211
+
212
+ pids = ptr.get_array_of_int32(0, num).sort
213
+ array = block_given? ? nil : []
214
+
215
+ pids.each do |lpid|
216
+ next unless pid == lpid if pid
217
+ info = ProcTaskAllInfo.new
218
+
219
+ nb = proc_pidinfo(lpid, PROC_PIDTASKALLINFO, 0, info, info.size)
220
+
221
+ if nb <= 0
222
+ if [Errno::EPERM::Errno, Errno::ESRCH::Errno].include?(FFI.errno)
223
+ next # Either we don't have permission, or the pid no longer exists
216
224
  else
217
- struct[PROC_STRUCT_FIELD_MAP[member]] = info[nested][member]
225
+ raise SystemCallError.new('proc_pidinfo', FFI.errno)
218
226
  end
219
227
  end
220
- end
221
228
 
222
- struct.freeze
229
+ # Avoid potentially invalid data
230
+ next if nb != info.size
223
231
 
224
- if block_given?
225
- yield struct
226
- else
227
- array << struct
232
+ struct = ProcTableStruct.new
233
+
234
+ # Pass by reference
235
+ get_cmd_args_and_env(lpid, struct)
236
+ get_thread_info(lpid, struct, info[:ptinfo]) unless thread_info == false
237
+ apply_info_to_struct(info, struct)
238
+
239
+ struct.freeze
240
+
241
+ if block_given?
242
+ yield struct
243
+ else
244
+ array << struct
245
+ end
228
246
  end
229
- end
230
247
 
231
- return nil if array.nil?
232
- pid ? array.first : array
248
+ array
249
+ end
233
250
  end
234
251
 
235
252
  private
236
253
 
254
+ # Pass by reference method that updates the Ruby struct based on the FFI struct.
255
+ #
256
+ def self.apply_info_to_struct(info, struct)
257
+ # Chop the leading xx_ from the FFI struct members for our ruby struct.
258
+ info.members.each do |nested|
259
+ info[nested].members.each do |member|
260
+ if info[nested][member].is_a?(FFI::StructLayout::CharArray)
261
+ struct[PROC_STRUCT_FIELD_MAP[member]] = info[nested][member].to_s
262
+ else
263
+ struct[PROC_STRUCT_FIELD_MAP[member]] = info[nested][member]
264
+ end
265
+ end
266
+ end
267
+ end
268
+
237
269
  # Returns an array of ThreadInfo objects for the given pid.
238
270
  #
239
271
  def self.get_thread_info(pid, struct, ptinfo)
@@ -1,6 +1,6 @@
1
1
  module Sys
2
2
  class ProcTable
3
3
  # The version of the sys-proctable library
4
- VERSION = '1.2.0'.freeze
4
+ VERSION = '1.2.1'.freeze
5
5
  end
6
6
  end
@@ -16,7 +16,7 @@ describe Sys::ProcTable do
16
16
  end
17
17
 
18
18
  it "has a VERSION constant set to the expected value" do
19
- expect(Sys::ProcTable::VERSION).to eql('1.2.0')
19
+ expect(Sys::ProcTable::VERSION).to eql('1.2.1')
20
20
  end
21
21
 
22
22
  it "defines a custom error class" do
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'sys-proctable'
5
- spec.version = '1.2.0'
5
+ spec.version = '1.2.1'
6
6
  spec.author = 'Daniel J. Berger'
7
7
  spec.license = 'Apache 2.0'
8
8
  spec.email = 'djberg96@gmail.com'
@@ -18,16 +18,25 @@ Gem::Specification.new do |spec|
18
18
  'CHANGES',
19
19
  'MANIFEST',
20
20
  'Rakefile',
21
- 'README',
21
+ 'README.md',
22
22
  'sys-proctable.gemspec'
23
23
  ]
24
24
 
25
- spec.extra_rdoc_files = ['CHANGES', 'README', 'MANIFEST', 'doc/top.txt']
25
+ spec.extra_rdoc_files = ['CHANGES', 'README.md', 'MANIFEST', 'doc/top.txt']
26
26
 
27
27
  spec.add_dependency('ffi')
28
28
  spec.add_development_dependency('rspec')
29
29
  spec.add_development_dependency('rake')
30
30
 
31
+ spec.metadata = {
32
+ 'homepage_uri' => 'https://github.com/djberg96/sys-proctable',
33
+ 'bug_tracker_uri' => 'https://github.com/djberg96/sys-proctable/issues',
34
+ 'changelog_uri' => 'https://github.com/djberg96/sys-proctable/blob/master/CHANGES',
35
+ 'documentation_uri' => 'https://github.com/djberg96/sys-proctable/wiki',
36
+ 'source_code_uri' => 'https://github.com/djberg96/sys-proctable',
37
+ 'wiki_uri' => 'https://github.com/djberg96/sys-proctable/wiki'
38
+ }
39
+
31
40
  spec.description = <<-EOF
32
41
  The sys-proctable library provides an interface for gathering information
33
42
  about processes on your system, i.e. the process table. Most major
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sys-proctable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel J. Berger
@@ -12,30 +12,30 @@ cert_chain:
12
12
  -----BEGIN CERTIFICATE-----
13
13
  MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MREwDwYDVQQDDAhkamJl
14
14
  cmc5NjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
15
- MB4XDTE4MDIxOTIzMjIxMloXDTI4MDIxNzIzMjIxMlowPzERMA8GA1UEAwwIZGpi
15
+ MB4XDTE4MDMxODE1MjIwN1oXDTI4MDMxNTE1MjIwN1owPzERMA8GA1UEAwwIZGpi
16
16
  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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- BZYwHQYDVR0RBBYwFIESZGpiZXJnOTZAZ21haWwuY29tMB0GA1UdEgQWMBSBEmRq
28
- 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
- RjqLjSzoaFEnqrhZCpuHzY9xEHmSldwHlzwLy60i4CHP7GySmlzTNZNJmPEG0ev5
30
- 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
- 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
- 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
- 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
- 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
- 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
- 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
37
37
  -----END CERTIFICATE-----
38
- date: 2018-02-20 00:00:00.000000000 Z
38
+ date: 2018-06-08 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: ffi
@@ -90,7 +90,7 @@ executables: []
90
90
  extensions: []
91
91
  extra_rdoc_files:
92
92
  - CHANGES
93
- - README
93
+ - README.md
94
94
  - MANIFEST
95
95
  - doc/top.txt
96
96
  files:
@@ -112,12 +112,18 @@ files:
112
112
  - CHANGES
113
113
  - MANIFEST
114
114
  - Rakefile
115
- - README
115
+ - README.md
116
116
  - sys-proctable.gemspec
117
117
  homepage: http://github.com/djberg96/sys-proctable
118
118
  licenses:
119
119
  - Apache 2.0
120
- metadata: {}
120
+ metadata:
121
+ homepage_uri: https://github.com/djberg96/sys-proctable
122
+ bug_tracker_uri: https://github.com/djberg96/sys-proctable/issues
123
+ changelog_uri: https://github.com/djberg96/sys-proctable/blob/master/CHANGES
124
+ documentation_uri: https://github.com/djberg96/sys-proctable/wiki
125
+ source_code_uri: https://github.com/djberg96/sys-proctable
126
+ wiki_uri: https://github.com/djberg96/sys-proctable/wiki
121
127
  post_install_message:
122
128
  rdoc_options: []
123
129
  require_paths:
@@ -134,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
140
  version: '0'
135
141
  requirements: []
136
142
  rubyforge_project:
137
- rubygems_version: 2.6.11
143
+ rubygems_version: 2.7.6
138
144
  signing_key:
139
145
  specification_version: 4
140
146
  summary: An interface for providing process table information
metadata.gz.sig CHANGED
Binary file
data/README DELETED
@@ -1,120 +0,0 @@
1
- == Description
2
- A Ruby interface for gathering process information.
3
-
4
- == Prerequisites
5
- * Test::Unit 2.x (development only)
6
-
7
- == Supported Platforms
8
- * Windows 2000 or later
9
- * Linux 2.6+
10
- * FreeBSD
11
- * Solaris 8+
12
- * HP-UX 10+
13
- * OS X 10.7+
14
- * AIX 5.3+
15
-
16
- == Installation
17
- gem install sys-proctable
18
-
19
- You may need to specify a platform in some cases. For example:
20
-
21
- gem install sys-proctable --platform mswin32 # Windows
22
- gem install sys-proctable --platform sunos # Solaris
23
- gem install sys-proctable --platform linux # Linux
24
- gem install sys-proctable --platform freebsd # FreeBSD
25
- gem install sys-proctable --platform darwin # OS X
26
-
27
- == Synopsis
28
- require 'sys/proctable'
29
- include Sys
30
-
31
- # Everything
32
- ProcTable.ps{ |p|
33
- puts p.pid.to_s
34
- puts p.comm
35
- # ...
36
- }
37
-
38
- # Just one process
39
- s = ProcTable.ps(2123)
40
- puts s.pid.to_s
41
- puts s.comm
42
- # ...
43
-
44
- # Return the results as an array of ProcTableStructs
45
- a = ProcTable.ps
46
- a.each do |p|
47
- puts p.pid
48
- # ...
49
- end
50
-
51
- == Notes
52
- Windows users may pass a host name as a second argument to get process
53
- information from a different host. This relies on the WMI service running.
54
-
55
- == Known Issues
56
- === FreeBSD
57
- A kvm interface is used. That means the owner of the process using the
58
- sys-proctable library needs to be a member of the kvm group (or root).
59
-
60
- === Bundler
61
- Bundler seems to have trouble installing the proper gem because of the
62
- platform specific gem names. To deal with that, run this command first:
63
-
64
- bundle config specific_platform true
65
-
66
- You can follow the issue at:
67
-
68
- https://github.com/bundler/bundler/issues/5536
69
-
70
- === Solaris
71
- The cmdline member on Solaris is limited to 80 characters unless you (or
72
- your program) own the process. This is a Solaris design flaw/feature.
73
-
74
- === OS X
75
- The libproc interface is used. That means you will only get list of
76
- processes that you have access to. To get a full listing, run as root.
77
-
78
- == Future Plans
79
- Add support for NetBSD and OpenBSD.
80
- Convert remaining C code (just HP-UX at this point) to FFI.
81
-
82
- == Acknowledgements
83
- This library was originally based on the Perl module Proc::ProcessTable
84
- by Dan Urist. Many ideas, as well as large chunks of code, were taken
85
- from his work. So, a big THANK YOU goes out to Dan Urist.
86
-
87
- A big thanks also goes out to Mike Hall who was very helpful with ideas,
88
- logic and testing.
89
-
90
- Thanks also go to Sean Chittenden for providing an account on one of his
91
- FreeBSD machines. This is how the FreeBSD support was (initially) added.
92
-
93
- Thanks go to James Hranicky for providing a patch that grabs name, eid,
94
- euid, gid and guid info in the Linux version, along with some general
95
- debugging help.
96
-
97
- Thanks go to David Felstead for the original OS X code. Thanks also go
98
- to Matthias Zirnstein for adding the original cmdline support for OS X.
99
-
100
- Finally I'd like to thank all the folks who have submitted bug reports
101
- and/or patches.
102
-
103
- == Help Wanted
104
- I do not have access to all platforms. If your platform is not supported
105
- then you will need to either submit a patch or give me a remote account
106
- on a box with a compiler so that I can write the code.
107
-
108
- == More documentation
109
- See the documentation under the 'doc' directory for more information,
110
- including platform specific notes and issues.
111
-
112
- == License
113
- Apache 2.0
114
-
115
- == Copyright
116
- (C) 2003-2016 Daniel J. Berger
117
- All Rights Reserved.
118
-
119
- == Author
120
- Daniel J. Berger