У меня есть приложение 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
должны быть записаны в файл?