4

我想监控服务器并在网页上实时显示顶级命令输出。在Mac OSerror: initializing curses上启动程序后出现错误。我不知道如何处理,我的问题是如何通过Node.JS实时获取顶级命令输出?

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);
});
4

2 回答 2

4

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

于 2013-03-25T09:23:41.420 回答
1

看起来 OSX 的top命令必须用-lflag 调用(其他 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);
});
于 2014-11-25T12:05:35.400 回答