【发布时间】:2015-06-07 02:16:11
【问题描述】:
您好,我正在创建一个插件,该插件使用一些命令行命令来获取进程内存和 cpu 使用情况,尽管该命令在终端中运行,但在使用节点运行时却无法运行。
此外,当使用节点运行时,findstr 部分根本不起作用,因此我从标准输出中获取了所有进程列表。通常我应该有一个 1 行:
这里是来源:
var spawn = require('child_process').spawn;
var readline = require('readline');
function Pstats() {
this.os = /^win/.test(process.platform) === true ? 'win' : 'nix';
this.win_cmd_arr = ['/C', 'wmic', 'path', 'Win32_PerfFormattedData_PerfProc_Process', 'get', 'IDProcess,WorkingSet,PercentProcessorTime', '|', 'findstr', '/R', '"^' + process.pid + '"'];
};
// this for example will list all processes with starting pid of 4
// wmic path Win32_PerfFormattedData_PerfProc_Process get IDProcess,WorkingSet,PercentProcessorTime | findstr /R "^4"
Object.defineProperties(Pstats.prototype, {
constructor: Pstats,
usage: {
enumerable: false,
value: function(callback) {
if (this.os === 'win') {
var proc = spawn('cmd.exe', this.win_cmd_arr);
proc.stdout.on('data', function(data) {
console.log(data.toString());
});
// readline.createInterface({
// input: proc.stdout,
// terminal: false
// }).on('line', function(line) {
// console.log(line);
// });
// readline.createInterface({
// input: proc.stderr,
// terminal: false
// }).on('line', function(line) {
// console.error(line);
// });
} else {
throw new TypeError('unsupported operatin system');
}
}
}
});
exports = module.exports = (function() {
return new Pstats();
})();
【问题讨论】: