Запустите скрипт оболочки с помощью node.js (childProcess)
Я хочу запустить сценарий оболочки на моем сервере node.js, но ничего не произошло...
childProcess.exec('~/./play.sh /media/external/' + req.params.movie, function() {}); //not working
Другой childProcess работает отлично, но процесс выше не будет.
childProcess.exec('ls /media/external/', movieCallback); //works
Если я запускаю скрипт в терминале, то он работает. Есть идеи? (chmod +x установлен)
2 ответа
Решение
Обратный вызов функции exec имеет аргументы error, stdout и stderr. Посмотрите, могут ли они помочь вам диагностировать проблему, выплевывая их на консоль:
exec('~/./play.sh /media/external/' + req.params.movie,
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
exec('sh ~/play.sh /media/external/' + req.params.movie ,function(err,stdout,stderr){
console.log(err,stdout,stderr);
})
Бежит твой play.sh
шеллскрипт с /media/external/
+req.params.movie в качестве аргумента. Вывод доступен через переменные stdout,stderr в обратном вызове.
ИЛИ ПОПРОБУЙТЕ ЭТО
var myscript = exec('sh ~/play.sh /media/external/' + req.params.movie);
myscript.stdout.on('data',function(data){
console.log(data); // process output will be displayed here
});
myscript.stderr.on('data',function(data){
console.log(data); // process error output will be displayed here
});`