Подтвердить что ты не робот

Запустите оболочку script с помощью node.js(childProcess)

Я хочу запустить оболочку script на моем сервере node.js, но ничего не произошло...

childProcess.exec('~/./play.sh /media/external/' + req.params.movie, function() {}); //not working

Другой childProcess работает отлично, но процесс выше не будет.

childProcess.exec('ls /media/external/', movieCallback); //works

Если я запустил script в терминале, то он работает. Есть идеи? (chmod + x установлен)

4b9b3361

Ответ 1

Обратный вызов функции exec имеет ошибки, переданные ему аргументы 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);
    }
});

Ответ 2

exec('sh ~/play.sh /media/external/' + req.params.movie ,function(err,stdout,stderr){
      console.log(err,stdout,stderr);
 })

Запускает ваш play.sh shellscript с аргументом /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
});`