HawatelPS

Summary

HawatelPS (hawatel_ps) is a Ruby gem for retrieving information about running processes. It is easy to use, and you can get useful information about a process. You can terminate, suspend, resume and check the status of the process on Linux platform. On Windows platform, you can terminate and check the current status of the process.

  • On Linux platform, the HawatelPS collects all information from pseudo-file system /proc, and it is free from any gem dependencies.
  • On Windows platform the HawatelPS collects all information from WMI (Windows Management Instrumentation), and it is free from any gem dependencies.

Installation

Add this line to your application's Gemfile:

gem 'hawatel_ps'

And then execute:

$ bundle

Or install it yourself as:

$ gem install hawatel_ps

Example usage

Find process with specified PID
process = HawatelPS.search_by_pid(123)
p process.name if !process.nil?
Get list all running processes
processes = HawatelPS.proc_table
Find processes which matching a certain name
processes = HawatelPS.search_by_name('ruby')
processes.each do |process|
  p "PID: #{process.pid}"
end
Find processes where vmsize attribute is equal or greater than 2000 kb
processes = HawatelPS.search_by_condition(attr => 'vmsize', oper => '>=', value => '2000')
processes.each do |process|
  p process.pid
end
Suspend processes which name matching with regular expression
processes = HawatelPS.search_by_name('/^ruby/')
processes.each do |process|
  p process.suspend
end
Resume stopped processes
processes = HawatelPS.search_by_condition(attr => 'state', oper => '==', value => 'stopped')
processes.each do |process|
  p process.resume
end
Terminate processes which using more that 60% CPU
processes = HawatelPS.search_by_condition(attr => 'cpu_percent', oper => '>', value => '60')
processes.each do |process|
  p process.terminate
end

Process attributes

Linux

NOTE: In case lack of permission to retrieving specified information, the attribute should return a string with the message "Permission denied."

Attribute name Description
cancelled_write_bytes Cancelled write bytes.
childs Childs of the process.
cmdline Command line arguments.
cpu_percent Average percent cpu usage since start.
cpu_time Total cpu time.
ctime Create process time.
cwd Current working directory.
egid Effective GID.
environ Environment of the process.
euid Effective UID.
exe Filename of the executable.
fsgidl File system GID.
fsuid File system UID.
limits Limits
listen_ports List ports on which process listening.
memory_percent Percent total memory usage by process.
open_files List open files by process (exclude /proc & /dev).
pid Process id.
ppid Process id of the parent process.
rchar Chars read.
read_bytes Bytes read.
rgid Real GID.
ruid Real UID.
sgid Saved set GID.
state State of process (running, stopped, ….).
stime Kernel mode jiffies.
suid Saved set UID.
syscr Read syscalls (numer of read I/O operations).
syscw Write syscalls (numer of write I/O operations).
threads Numer of threads.
tty Controlling tty (terminal).
username The user name of the owner of this process.
utime User mode jiffies.
vmdata Size of private data segments.
vmlib Size of shared library code.
vmrss Size of memory portions.
vmsize Total program size.
vmswap Amount of swap used by process.
wchar Chars written.
write_bytes Bytes written.

Windows

Attribute name Description
availablevirtualsize The free virtual address space available to this process.
caption Short description of an process one-line string.
childs Childs of the process.
commandline Command line used to start a specific process, if applicable.
cpupercent Average percent cpu usage since process start.
creationclassname It is always Win32_Process
creationdate Date the process begins executing.
cscreationclassname It is always Win32_ComputerSystem.
csname Name of the scoping computer system.
description Description of a process.
domain The domain name under which this process is running.
executablepath Path to the executable file of the process.
executionstate It is always nil.
handle Process identifier.
handlecount Total number of open handles owned by the process. HandleCount is the sum of the handles currently open by each thread in this process.
installdate Date an object is installed. The object may be installed without a value being written to this property.
kernelmodetime Time in kernel mode, in 100 nanosecond units. If this information is not available, use a value of 0 (zero)
maximumworkingsetsize Maximum working set size of the process. The working set of a process is the set of memory pages visible to the process in physical RAM.
memorypercent Average percent memory usage by the process (with shared memory, equivalent to WorkingSet in TaskManager)
minimumworkingsetsize Minimum working set size of the process. The working set of a process is the set of memory pages visible to the process in physical RAM.
name Name of the executable file responsible for the process, equivalent to the Image Name property in Task Manager.
oscreationclassname It is always Win32_OperatingSystem.
osname Name of the scoping operating system.
otheroperationcount Number of I/O operations performed that are not read or write operations.
othertransfercount Amount of data transferred during operations that are not read or write operations.
pagefaults Number of page faults that a process generates.
pagefileusage Amount of page file space that a process is using currently. This value is consistent with the VMSize value in TaskMgr.exe.
parentprocessid Unique identifier of the process that creates a process.
peakpagefileusage Maximum amount of page file space used during the life of a process.
peakvirtualsize Maximum virtual address space a process uses at any one time. Using virtual address space does not necessarily imply corresponding use of either disk or main memory pages.
peakworkingsetsize Peak working set size of a process.
priority Scheduling priority of a process within an operating system.
privatepagecount Current number of pages allocated that are only accessible to the process represented by this Win32_Process instance.
processid Numeric identifier used to distinguish one process from another.
quotanonpagedpoolusage Quota amount of nonpaged pool usage for a process.
quotapagedpoolusage Quota amount of paged pool usage for a process.
quotapeaknonpagedpoolusage Peak quota amount of nonpaged pool usage for a process.
quotapeakpagedpoolusage Peak quota amount of paged pool usage for a process.
readoperationcount Number of read operations performed.
readtransfercount Amount of data read.
sessionid Unique identifier that an operating system generates when a session is created. A session spans a period of time from logon until logoff from a specific system.
sid The security identifier descriptor for the owner of this process.
status State of a process ('running' or 'not running')
terminationdate Process was stopped or terminated. To get the termination time, a handle to the process must be held open. Otherwise, this property returns NULL.
threadcount Number of active threads in a process.
user The user name of the owner of this process.
usermodetime Time in user mode, in 100 nanosecond units. If this information is not available, use a value of 0 (zero).
virtualsize Current size of the virtual address space that a process is using, not the physical or virtual memory actually used by the process.
windowsversion Version of Windows in which the process is running.
wmi_object Native WMI Object represented by the process.
workingsetsize Amount of memory in bytes that a process needs to execute efficiently—for an operating system that uses page-based memory management.
writeoperationcount Number of write operations performed.
writetransfercount Amount of data written.

Contributing

See CONTRIBUTING

License

The gem is available as open source under the terms of the MIT License.