2013-05-25 4 views
2

У меня есть приложение node.js, которое запускается до тех пор, пока пользователь не покинет процесс. Я пытаюсь запустить это приложение в качестве фонового процесса с forever, однако, мое приложение изначально выводит что-то на стандартный вывод:Запуск приложения node.js в качестве фонового процесса

process.stdout.clearLine(); 
process.stdout.cursorTo(0); 
process.stdout.write('...'); 

и если я запускаю это приложение с вечно

forever start -l forever.log -o out.log -e err.log app.js 

это запустить в фоновом режиме, но в файле out.log ничего нет. Если я смотрю на err.log я вижу, что проблема заключается в печати что-то stdout:

$ cat err.log 

/Users/err/Sites/js/test/app.js:105 
    process.stdout.clearLine(); 
       ^
TypeError: Object #<Socket> has no method 'clearLine' 
    at null.<anonymous> (/Users/err/Sites/js/test/app.js:105:20) 
    at wrapper [as _onTimeout] (timers.js:252:14) 
    at Timer.listOnTimeout [as ontimeout] (timers.js:110:15) 

Я также пытался использовать forever-monitor и написал небольшой скрипт:

var config = require('./config'); 

if (config.runInBackground) { 
    var forever = require('forever-monitor'); 
    var child = new (forever.Monitor)('app.js', { 
    max: 1, 
    silent: true, 
    outFile: 'monitor.out.log', 
    errFile: 'monitor.err.log' 
    }); 
    child.on('stdout', function(e) { 
    console.log(e); 
    }); 
    child.on('exit', function() { 
    console.log('exited.'); 
    }); 
    child.start(); 
} else { 
    // do the regular process.stdout.write('...'); 
} 

Но мой сценарий существует без написания какого-либо файла или начать фоновый процесс.

Как запустить приложение узла в фоновом режиме и записать исходный файл stdout в файл журнала? Или даже лучше, возможно ли иметь вариант (скажем, в файле config.js) для запуска этого приложения в качестве фонового процесса или нет, и если да, то все файлы stdout должны быть записаны в файл?

ответ

1

Возможно, вам потребуется указать абсолютный путь для ваших файлов.

Таким образом, существуют альтернативы навсегда, которые могут работать в зависимости от вашей операционной системы. node-windows и node-mac обе предлагают то, что вы ищете. node-linux еще не готов, но в проекте есть несколько скриптов init.d, которые можно настроить для запуска процессов с протоколированием.

Сведения о конфиденциальности: Я являюсь автором всех трех из них.

Смежные вопросы