egg-scripts
Version:
deploy tool for egg project
40 lines (36 loc) • 1.14 kB
JavaScript
;
const runScript = require('runscript');
const isWin = process.platform === 'win32';
const REGEX = isWin ? /^(.*)\s+(\d+)\s*$/ : /^\s*(\d+)\s+(.*)/;
exports.findNodeProcess = function* (filterFn) {
const command = isWin ?
'wmic Path win32_process Where "Name = \'node.exe\'" Get CommandLine,ProcessId' :
'ps -eo "pid,command"';
const stdio = yield runScript(command, { stdio: 'pipe' });
const processList = stdio.stdout.toString().split('\n')
.reduce((arr, line) => {
if (!!line && !line.includes('/bin/sh') && line.includes('node')) {
const m = line.match(REGEX);
/* istanbul ignore else */
if (m) {
const item = isWin ? { pid: m[2], cmd: m[1] } : { pid: m[1], cmd: m[2] };
if (!filterFn || filterFn(item)) {
arr.push(item);
}
}
}
return arr;
}, []);
return processList;
};
exports.kill = function(pids, signal) {
pids.forEach(pid => {
try {
process.kill(pid, signal);
} catch (err) { /* istanbul ignore next */
if (err.code !== 'ESRCH') {
throw err;
}
}
});
};