2013-03-25 3 views
4

Я хочу контролировать сервер и показывать верхний вывод команды в реальном времени на веб-странице. есть ошибка error: initializing curses после запуска программы на Mac OS. Я не знаю, как с этим бороться, мой вопрос в том, как получить верхний вывод команды в реальном времени через Node.JS?Как я могу получить верхний вывод команды в реальном времени в Mac Os

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

Если запустить top в окне командной строки, он обновляет данные на экране, используя библиотеку проклятий. Попробуйте использовать пакетный режим «-b» на вершине, чтобы увидеть, если это будет позволять узел трубе своего выходу в ваш

+0

Спасибо. я не нашел параметр -b в оболочке терминала в Mac OS (V10.6.8) –

1

Похоже, команда OSX в top должна быть вызвана с -l флагом (другое Unixes использовать -b). С этим флагом библиотека «curses» больше не требуется (эта библиотека делает фантазию форматирования для интерактивного режима по умолчанию), поэтому трубопровод начинает работать.

Вот код, чтобы начать с:

var top = spawn("top", ["-l 0"]); 
top.stdout.pipe(process.stdout); 
top.stderr.on("data", function(data) { 
    console.log("ps stderr: " + data); 
}); 
Смежные вопросы