Node.js 如何在Mac Os中实时获取top命令输出

Node.js 如何在Mac Os中实时获取top命令输出,node.js,child-process,Node.js,Child Process,我想监控服务器并在网页上实时显示top命令输出。 有一个错误:在Mac OS上启动程序后初始化诅咒。 我不知道如何处理它,我的问题是如何通过Node.JS实时获取top命令输出 var spawn = require('child_process').spawn, com = spawn('/usr/bin/top', []); var io = require('socket.io').listen(5555); com.stdout.on('data', function(da

我想监控服务器并在网页上实时显示top命令输出。 有一个错误:在Mac OS上启动程序后初始化诅咒。 我不知道如何处理它,我的问题是如何通过Node.JS实时获取top命令输出

var spawn = require('child_process').spawn,
    com = spawn('/usr/bin/top', []); 
var io = require('socket.io').listen(5555);
  com.stdout.on('data', function(data){
    io.sockets.emit('get result', data);
  }
  );
com.stderr.on('data', function(data){
console.log('stderr: ' + data);
});

如果在命令窗口中运行
top
,它将使用curses库更新屏幕上的数据。尝试使用顶部的批处理模式“-b”选项,查看是否允许节点将其输出通过管道传输到您的

看起来OSX的
top
命令必须使用
-l
标志调用(其他Unix使用
-b
)。 有了这个标志,就不再需要“curses”库了(这个库对默认交互模式进行了奇特的格式化),所以管道开始工作了

以下是要开始的代码:

var top = spawn("top", ["-l 0"]);
top.stdout.pipe(process.stdout);
top.stderr.on("data", function(data) {
  console.log("ps stderr: " + data);
});

非常感谢。在Mac OS(V10.6.8)的终端外壳中找不到'-b'选项