如何在Mac Os中实时获得top命令输出

时间:2013-03-25 02:49:57

标签: node.js child-process

我想在网页上实时监控服务器并显示最高命令输出。 程序在 Mac OS 上启动后出现错误error: initializing curses。 我不知道如何处理它,我的问题是如何通过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);
});

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

看起来必须使用top标志调用OSX的-l命令(其他UNIX使用-b)。 使用该标志不再需要“curses”库(此lib为默认交互模式执行花式格式化),因此管道开始工作。

以下是开始的代码:

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