我想在网页上实时监控服务器并显示最高命令输出。
程序在 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);
});
答案 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);
});