process_status

A utility to get process information for given process name

npm install process_status
8 downloads in the last month

process_status

I needed to display process information on a status page in a dashboard. From the command line I would type something like:

$ ps -ef | grep httpd
root      3199     1  0 Sep17 ?        00:00:00 /usr/sbin/httpd
apache    3252  3199  0 Sep17 ?        00:00:00 /usr/sbin/httpd
apache    3253  3199  0 Sep17 ?        00:00:00 /usr/sbin/httpd
apache    3254  3199  0 Sep17 ?        00:00:00 /usr/sbin/httpd
apache    3255  3199  0 Sep17 ?        00:00:00 /usr/sbin/httpd
apache    3256  3199  0 Sep17 ?        00:00:00 /usr/sbin/httpd
apache    3257  3199  0 Sep17 ?        00:00:00 /usr/sbin/httpd
apache    3258  3199  0 Sep17 ?        00:00:00 /usr/sbin/httpd
apache    3259  3199  0 Sep17 ?        00:00:00 /usr/sbin/httpd
swright  10615  8615  0 14:51 pts/1    00:00:00 grep httpd

The process_status utility runs something like that with some formatting options and returns an object containing something like the following:

{ grep_str: 'httpd',
  user_format: [],
  pid: '3199',
  pgid: '3199',
  format_str: '%U%p%r%a',
  processes:
   [ 'root      3199  3199 /usr/sbin/httpd',
     'apache    3252  3199 /usr/sbin/httpd',
     'apache    3253  3199 /usr/sbin/httpd',
     'apache    3254  3199 /usr/sbin/httpd',
     'apache    3255  3199 /usr/sbin/httpd',
     'apache    3256  3199 /usr/sbin/httpd',
     'apache    3257  3199 /usr/sbin/httpd',
     'apache    3258  3199 /usr/sbin/httpd',
     'apache    3259  3199 /usr/sbin/httpd' ],
  format_array: [ 'user', 'pid', 'pgid', 'args' ],
  formatted_process_list:
   [ [ 'root', '3199', '3199', '/usr/sbin/httpd' ],
     [ 'apache', '3252', '3199', '/usr/sbin/httpd' ],
     [ 'apache', '3253', '3199', '/usr/sbin/httpd' ],
     [ 'apache', '3254', '3199', '/usr/sbin/httpd' ],
     [ 'apache', '3255', '3199', '/usr/sbin/httpd' ],
     [ 'apache', '3256', '3199', '/usr/sbin/httpd' ],
     [ 'apache', '3257', '3199', '/usr/sbin/httpd' ],
     [ 'apache', '3258', '3199', '/usr/sbin/httpd' ],
     [ 'apache', '3259', '3199', '/usr/sbin/httpd' ] ] }

You can then use the display the data using the processes array or for prettier output you can use the formatted_process_list array to generate a table and the format_array to generate table headers.

Usage:

/**
*  Finds a process based on the grep string
*  
*  @param  grep_str    a string that will be used to grep the process list
*  @param   user_format     an array of friendly strings that will be used to 
*                           get string formatters from the formatters array
*  @param   cb              callback  
*/
get_status(grep_str, user_format, cb)

To generate the formatted_process_list array

/**
* @param   status      A status object created by get_status
* @param   cb          A callback function
*/
process_status_data(status, cb)

See the test.js file for an implementation example.

npm loves you