sys-proctable 0.7.6-i586-linux

Sign up to get free protection for your applications and to get access to all the features.
data/doc/hpux.txt ADDED
@@ -0,0 +1,77 @@
1
+ = Description
2
+ sys-proctable
3
+
4
+ A Ruby version of the 'ps' command. This is a C extension, not parsed
5
+ output. For HP-UX, proc structs are grabbed via the pstat_getproc() call.
6
+
7
+ = Synopsis
8
+ require 'sys/proctable'
9
+ include Sys
10
+
11
+ # Everything
12
+ ProcTable.ps{ |p|
13
+ puts p.pid.to_s
14
+ puts p.comm
15
+ ...
16
+ }
17
+
18
+ or
19
+
20
+ # Return the results as an array of ProcTableStructs
21
+ a = ProcTable.ps()
22
+ a.each do |p|
23
+ puts a.pid
24
+ ...
25
+ end
26
+
27
+ = Constants
28
+ VERSION
29
+ Returns the current version number for this package (as a string).
30
+
31
+ = Class Methods
32
+ ProcTable.fields
33
+ Returns an array of fields available on the current OS.
34
+
35
+ ProcTable.ps(pid=nil)
36
+ ProcTable.ps{ |s| ... }
37
+ Returns a struct of type ProcTableStruct for every process in the proc
38
+ table in block form. Otherwise it returns an array of ProcTableStruct's.
39
+
40
+ If a pid is provided then a single ProcTable struct is returned, or nil
41
+ if the pid is not found.
42
+
43
+ = Supported fields
44
+ You can view the supported fields with the "fields()" class method.
45
+
46
+ = Future Plans
47
+ Have the flags field return a meaningful value.
48
+
49
+ = Notes
50
+ The "comm" field isn't really part of the psinfo struct. It is just a copy
51
+ (i.e. is identical to) the "fname" field. I added it to provide a degree
52
+ of consistency between all of the platforms. I will also make a point
53
+ of adding it to any future platform releases.
54
+
55
+ = Known Bugs
56
+ None that I'm aware of. Please log any bugs on the project page at
57
+ http://www.rubyforge.org/projects/sysutils
58
+
59
+ = License
60
+ Ruby's
61
+
62
+ = Copyright
63
+ (C) 2003-2006 Daniel J. Berger
64
+ All Rights Reserved.
65
+
66
+ = Warranty
67
+ This package is provided "as is" and without any express or
68
+ implied warranties, including, without limitation, the implied
69
+ warranties of merchantability and fitness for a particular purpose.
70
+
71
+ = Author
72
+ Daniel J. Berger
73
+ djberg96 at nospam at gmail dot com
74
+ imperator on IRC (Freenode)
75
+
76
+ = See Also
77
+ ps, proc
data/doc/linux.txt ADDED
@@ -0,0 +1,85 @@
1
+ = Description
2
+ sys-proctable
3
+
4
+ A Ruby version of the 'ps' command. This is a C extension, not parsed
5
+ output. For Linux, process information is read out of /proc.
6
+
7
+ = Synopsis
8
+ require 'sys/proctable'
9
+ include Sys
10
+
11
+ # Everything
12
+ ProcTable.ps{ |p|
13
+ puts p.pid.to_s
14
+ puts p.comm
15
+ ...
16
+ }
17
+
18
+ or
19
+
20
+ # Just one process
21
+ p = ProcTable.ps(2123)
22
+ puts p.pid.to_s
23
+ puts p.comm
24
+ ...
25
+
26
+ or
27
+
28
+ # Return the results as an array of ProcTableStructs
29
+ a = ProcTable.ps()
30
+ a.each do |p|
31
+ puts a.pid
32
+ ...
33
+ end
34
+
35
+ = Constants
36
+ VERSION
37
+ Returns the current version number for this package (as a string).
38
+
39
+ = Class Methods
40
+ ProcTable.fields
41
+ Returns an array of fields available on the current OS.
42
+
43
+ ProcTable.ps(pid=nil)
44
+ ProcTable.ps{ |s| ... }
45
+ If no pid's or processes are included as arguments, in block form it
46
+ returns a struct of type ProcTableStruct for every process in the proc
47
+ table. Otherwise it returns an array of ProcTableStruct's.
48
+
49
+ If a process id is provided, a single ProcTable struct is returned, or
50
+ nil if the pid is not found.
51
+
52
+ = Exception Classes
53
+ ProcTableError < StandardError
54
+ Raised if the /proc field is unreadable and/or unmounted.
55
+
56
+ = Supported fields
57
+ You can view the supported fields with the "fields()" class method.
58
+
59
+ = Future Plans
60
+ Create a pure Ruby version as an alternative.
61
+ Change the ttynum field to ttydev and return a string instead of an int.
62
+
63
+ = Known Bugs
64
+ None known. Please log any bugs on the project page at
65
+ http://www.rubyforge.org/projects/sysutils
66
+
67
+ = License
68
+ Ruby's
69
+
70
+ = Copyright
71
+ (C) 2003-2006 Daniel J. Berger
72
+ All Rights Reserved
73
+
74
+ = Warranty
75
+ This package is provided "as is" and without any express or
76
+ implied warranties, including, without limitation, the implied
77
+ warranties of merchantability and fitness for a particular purpose.
78
+
79
+ = Author
80
+ Daniel J. Berger
81
+ djberg96 at nospam at gmail dot com
82
+ rubyhacker1 on IRC (Freenode)
83
+
84
+ = See Also
85
+ ps, proc(5)
data/doc/solaris.txt ADDED
@@ -0,0 +1,99 @@
1
+ = Description
2
+ sys-proctable
3
+
4
+ A Ruby version of the 'ps' command. This is a C extension, not parsed
5
+ output. For Solaris, data is read out of /proc via the psinfo struct.
6
+
7
+ = Synopsis
8
+ require 'sys/proctable'
9
+ include Sys
10
+
11
+ # Everything
12
+ ProcTable.ps{ |p|
13
+ puts p.pid.to_s
14
+ puts p.comm
15
+ ...
16
+ }
17
+
18
+ or
19
+
20
+ # Just one process
21
+ s = ProcTable.ps(2123)
22
+ puts s.pid.to_s
23
+ puts s.comm
24
+ ...
25
+
26
+ # Return the results as an array of ProcTableStructs
27
+ a = ProcTable.ps
28
+ a.each do |p|
29
+ puts a.pid
30
+ ...
31
+ end
32
+
33
+ = Constants
34
+ VERSION
35
+ Returns the current version number for this package (as a string).
36
+
37
+ = Class Methods
38
+ ProcTable.fields
39
+ Returns an array of fields available on the current OS.
40
+
41
+ ProcTable.ps(pid=nil)
42
+ ProcTable.ps{ |s| ... }
43
+ If no pid is included as an argument, in block form it
44
+ returns a struct of type ProcTableStruct for every process in the proc
45
+ table. Otherwise it returns an array of ProcTable struct's. If a pid
46
+ is provided it will return a single ProcTable struct for that pid, or
47
+ nil if it is not found.
48
+
49
+ = Exception Classes
50
+ ProcTableError < StandardError
51
+ Raised if the /proc directory is unreadable and/or unmounted.
52
+
53
+ = Supported fields
54
+ You can view the supported fields with the "fields()" class method.
55
+
56
+ = Future Plans
57
+ Return a more meaningful result for the wchan member (2.6+).
58
+ Add env info where possible.
59
+
60
+ = Notes
61
+ The "comm" field isn't really part of the psinfo struct. It is just a copy
62
+ (i.e. is identical to) the "fname" field. I added it to provide a degree
63
+ of consistency between all of the platforms. I will also make a point
64
+ of adding it to any future platform releases.
65
+
66
+ The cmdline string is limited to 80 characters, except for those processes
67
+ which you (or your program) own.
68
+
69
+ The ttydev field is, for now, an integer. If there is no associated tty with
70
+ the process, a -1 is returned. In the future, this field will be changed to
71
+ a string (i.e. the actual device name).
72
+
73
+ I suppose I *could* add a -lkvm version for Solaris (this is what Dan Urist
74
+ is now using in Proc::ProcessTable) but I haven't found a compelling reason
75
+ to do so. If you think you have one, please let me know.
76
+
77
+ = Known Bugs
78
+ None that I am aware of. Please log any bugs on the RubyForge project page at
79
+ http://www.rubyforge.org/projects/sysutils
80
+
81
+ = License
82
+ Ruby's
83
+
84
+ = Copyright
85
+ (C) 2003-2006 Daniel J. Berger
86
+ All Rights Reserved.
87
+
88
+ = Warranty
89
+ This package is provided "as is" and without any express or
90
+ implied warranties, including, without limitation, the implied
91
+ warranties of merchantability and fitness for a particular purpose.
92
+
93
+ = Author
94
+ Daniel J. Berger
95
+ djberg96 at nospam at gmail dot com
96
+ imperator on IRC (Freenode)
97
+
98
+ = See Also
99
+ ps, proc
data/doc/top.txt ADDED
@@ -0,0 +1,53 @@
1
+ = Description
2
+ A simple 'top' interface for Ruby
3
+
4
+ = Prerequisites
5
+ Requires the "sys/proctable" package (which should be installed along
6
+ with this package).
7
+
8
+ = Synopsis
9
+ require "sys/top"
10
+ include Sys
11
+
12
+ Top.top(5).each{ |ps|
13
+ p ps
14
+ }
15
+
16
+ = Constants
17
+ VERSION
18
+ Returns the version number of this package as a String.
19
+
20
+ = Class Methods
21
+ Top.top(number=10, field="pctcpu")
22
+ Returns an array of ProcTableStruct's. The size of the array (i.e. the
23
+ number of processes) that it returns is based on +number+, and sorted by
24
+ +pctcpu+. By default, the size and field values are 10 and "pctcpu",
25
+ respectively.
26
+
27
+ = Notes
28
+ Not all fields are available on all platforms. Please check your
29
+ platform specific documentation for which fields are available.
30
+
31
+ I used sort() instead of sort_by() internally to maintain backward
32
+ compatability with Ruby 1.6.8, which I happen to need.
33
+
34
+ = Bugs
35
+ None that I'm aware of. Please log bug reports on the project page at
36
+ http://www.rubyforge.org/projects/sysutils
37
+
38
+ = License
39
+ Ruby's
40
+
41
+ = Copyright
42
+ (C) 2004-2006 Daniel J. Berger
43
+ All Rights Reserved.
44
+
45
+ = Warranty
46
+ This package is provided "as is" and without any express or
47
+ implied warranties, including, without limitation, the implied
48
+ warranties of merchantability and fitness for a particular purpose.
49
+
50
+ = Author
51
+ Daniel J. Berger
52
+ djberg96 at nospam at gmail dot com
53
+ imperator on IRC (Freenode)
data/doc/windows.txt ADDED
@@ -0,0 +1,122 @@
1
+ = Description
2
+ A Ruby interface for gathering process information. For MS Windows,
3
+ the process information is gathered via OLE + WMI, using pure Ruby.
4
+
5
+ = Synopsis
6
+ require 'sys/proctable'
7
+ include Sys
8
+
9
+ # Everything
10
+ ProcTable.ps{ |p|
11
+ puts p.pid.to_s
12
+ puts p.comm
13
+ ...
14
+ }
15
+
16
+ or
17
+
18
+ # A single pid
19
+ p = ProcTable.ps(1234)
20
+ puts p.pid.to_s
21
+ puts p.comm
22
+ ...
23
+
24
+ or
25
+
26
+ # Return the results as an array of ProcTableStructs
27
+ a = ProcTable.ps
28
+ a.each do |p|
29
+ puts a.pid
30
+ ...
31
+ end
32
+
33
+ = Constants
34
+ VERSION
35
+ Returns the current version number for this package (as a string).
36
+
37
+ = Class Methods
38
+ ProcTable.fields
39
+ Returns an Array of fields available on the current OS in the
40
+ ProcTableStruct.
41
+
42
+ ProcTable.ps(pid=nil, host='localhost')
43
+ ProcTable.ps{ |s| ... }
44
+ Returns a struct of type ProcTableStruct for every process in the proc
45
+ table in block form. Otherwise it returns an array of ProcTableStruct's.
46
+
47
+ If 'pid' is provided, then only a struct for that pid is returned, or
48
+ nil if it is not found.
49
+
50
+ If 'host' is provided, then processes from that host are gathered. By
51
+ default, process information is gathered on the local host.
52
+
53
+ = Supported fields
54
+ The currently supported fields for MS Windows (i.e. your ProcTable struct
55
+ members) are:
56
+
57
+ caption, cmdline, comm, creation_class_name, creation_date,
58
+ cs_creation_class_name, cs_name, description, executable_path,
59
+ execution_state, handle, handle_count, install_date, kernel_mode_time,
60
+ maximum_working_set_size, minimum_working_set_size, name,
61
+ os_creation_class_name, os_name, other_operation_count,
62
+ other_transfer_count, page_faults, page_file_usage, peak_virtual_size,
63
+ ppid, peak_working_set_size, priority, private_page_count, pid,
64
+ quota_non_paged_pool_usage, quota_paged_pool_usage,
65
+ quota_peak_non_paged_pool_usage, quota_non_paged_pool_usage,
66
+ read_operation_count, read_transfer_count, session_id,
67
+ termination_date, thread_count, user_mode_time, virtual_size,
68
+ windows_version, working_set_size, write_operation_count,
69
+ write_transfer_count
70
+
71
+ You can also view them with the fields() class method.
72
+
73
+ = Notes
74
+ For the sake of attempting to provide a somewhat common API, the 'comm'
75
+ and 'cmdline' fields have been included as part of the structure. The
76
+ 'comm' member corresponds to the Name attribute of Win32_Process. The
77
+ 'cmdline' attribute corresponds to either the Executable_Path attribute
78
+ (on Windows 2000 or earlier) or the CommandLine attribute (on Windows XP
79
+ and later).
80
+
81
+ Also note that the ProcessId and ParentProcessId attributes have been
82
+ abbreviated as 'pid' and 'ppid' in the struct members, again to keep the
83
+ members more consistent between platforms.
84
+
85
+ The "Mem Usage" and "VM Size" that you may be used to seeing in your Task
86
+ Manager window (probably) correspond to the 'working_set_size' and
87
+ 'page_file_usage' struct members, respectively, keeping in mind that
88
+ those values are in bytes, not kilobytes. I say 'probably' because
89
+ comments that I've read online indicate that it may not always line up
90
+ with what you see in the Task Manager, based on the current version (or
91
+ even Service Pack) of Windows that you are using.
92
+
93
+ = Future Plans
94
+ Possibly use the Win32_PerfFormattedData_PerfProc_Process class to get
95
+ additional process information.
96
+
97
+ = Known Bugs
98
+ Versions of Ruby earlier than 1.8.2 resulted in segfaults when trying to
99
+ run this code. You will likely encounter the same behavior.
100
+
101
+ Please log any additional bug reports on the project page at
102
+ http://www.rubyforge.org/projects/sysutils
103
+
104
+ = License
105
+ Ruby's
106
+
107
+ = Copyright
108
+ (C) 2003-2006 Daniel J. Berger
109
+ All Rights Reserved
110
+
111
+ = Warranty
112
+ This package is provided "as is" and without any express or
113
+ implied warranties, including, without limitation, the implied
114
+ warranties of merchantability and fitness for a particular purpose.
115
+
116
+ = Author
117
+ Daniel J. Berger
118
+ djberg96 at nospam at gmail dot com
119
+ imperator on IRC (freenode)
120
+
121
+ = See Also
122
+ OLE + WMI
data/ext/extconf.rb ADDED
@@ -0,0 +1,98 @@
1
+ #############################################################################
2
+ # Installation script for sys-proctable.
3
+ #
4
+ # By running this file, it is assumed that you want a C extension, and not
5
+ # a pure Ruby version. If you want a pure Ruby version (and you're on a
6
+ # platform for which it's supported), run install.rb instead.
7
+ #############################################################################
8
+ require 'mkmf'
9
+ require 'fileutils'
10
+
11
+ c_file = nil
12
+ h_file = nil
13
+ tc_file = nil
14
+
15
+ ########################################################################
16
+ # Ruby 1.8.3 and later mandates the use of rb_pid_t over pid_t because
17
+ # some libraries define their own pid_t. So, we check for that.
18
+ ########################################################################
19
+ have_type('rb_pid_t', 'ruby.h')
20
+
21
+ ##########################################################################
22
+ # Determine appropriate source files based on platform. Also, check for
23
+ # certain header files and/or libraries on some platforms.
24
+ #
25
+ # On FreeBSD a different source file is used if the /proc filesystem is
26
+ # not found (kvm is used instead). For OpenBSD or NetBSD, the kvm
27
+ # interface is always used for now.
28
+ ##########################################################################
29
+ case RUBY_PLATFORM
30
+ when /hpux/i
31
+ c_file = 'hpux/hpux.c'
32
+ h_file = 'hpux/hpux.h'
33
+ tc_file = 'tc_hpux'
34
+ when /freebsd/i
35
+ if File.exists?('/proc') && Dir['/proc/*'].length > 0
36
+ c_file = 'freebsd/freebsd.c'
37
+ h_file = 'freebsd/freebsd.h'
38
+ tc_file = 'tc_freebsd'
39
+ else
40
+ have_library('kvm')
41
+ have_struct_member('struct kinfo_proc', 'kp_proc', 'sys/user.h')
42
+ have_struct_member('struct kinfo_proc', 'kp_eproc', 'sys/user.h')
43
+ c_file = 'bsd/bsd.c'
44
+ tc_file = 'tc_kvm_bsd.rb'
45
+ end
46
+ when /openbsd|netbsd/
47
+ have_library('kvm')
48
+ c_file = 'bsd/bsd.c'
49
+ tc_file = 'tc_kvm_bsd.rb'
50
+ when /solaris|sunos/i
51
+ c_file = 'sunos/sunos.c'
52
+ h_file = 'sunos/sunos.h'
53
+ tc_file = 'tc_sunos'
54
+ have_header('procfs.h') # false means Solaris 2.5.x
55
+ when /linux/i
56
+ c_file = 'linux/linux.c'
57
+ h_file = 'linux/linux.h'
58
+ tc_file = 'tc_linux'
59
+ when /darwin/i
60
+ c_file = 'darwin/darwin.c'
61
+ tc_file = 'tc_darwin'
62
+ when /windows|win32|cygwin|mingw|dos/i
63
+ msg = 'Use the install_pure_ruby.rb script to install on MS Windows'
64
+ STDERR.puts msg
65
+ exit
66
+ else
67
+ puts 'This platform not currently supported. Exiting...'
68
+ exit
69
+ end
70
+
71
+ #####################################################################
72
+ # Move the 'windows.rb' file under 'lib/sys/' to '.orig' to prevent
73
+ # mkmf from installing it during the 'make install' phase.
74
+ #####################################################################
75
+ if File.exists?('../lib/sys/windows.rb')
76
+ File.rename('../lib/sys/windows.rb', '../lib/sys/windows.orig')
77
+ end
78
+
79
+ ###################
80
+ # build ts_all.rb
81
+ ###################
82
+ test_file = '../test/ts_all.rb'
83
+ File.open(test_file, 'w'){ |fh|
84
+ fh.puts "require 'tc_all'"
85
+ fh.puts "require '#{tc_file}'"
86
+ fh.puts "require 'tc_top'"
87
+ }
88
+
89
+ ########################################################################
90
+ # Copy or link files to current directory for create_makefile to work.
91
+ ########################################################################
92
+ File.delete('proctable.c') rescue nil
93
+ File.delete(File.basename(h_file)) rescue nil
94
+
95
+ FileUtils.cp(c_file, 'proctable.c')
96
+ FileUtils.cp(h_file, File.basename(h_file)) if h_file
97
+
98
+ create_makefile('sys/proctable')