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.