ps-find
Version:
Find processes with ease
66 lines (50 loc) • 1.22 kB
JavaScript
var spawn = require('child_process').spawn;
// ps aux output mapping
var MAPPING = {
pid: 0,
name: 1
};
var find = function (input, callback) {
var pgrep = spawn('pgrep', ['-afl', input]);
pgrep.stdout.on('data', function (data) {
var result = parse(data);
post(callback, null, result);
});
pgrep.stderr.on('data', function (data) {
post(callback, data);
});
pgrep.on('close', function (code) {
if (code !== 0) {
// Nothing found
post(callback, new Error('No process found.'));
}
});
};
var post = function (callback, error, result) {
result = result || [];
if (typeof callback === 'function') {
callback(error, result);
}
};
var parse = function (input) {
var result = [],
data = input.toString().split('\n'),
proc = null;
for (var i = 0, length = data.length; i < length; i++) {
if (data[i].length > 0) {
data[i] = data[i].replace(/ +/g, ' ');
proc = parseRow(data[i]);
result.push(proc);
}
}
return result;
};
var parseRow = function (input) {
var data = input.split(' ');
return {
pid: parseInt(data[MAPPING.pid]),
name: data[MAPPING.name]
};
};
module.exports.find = find;