用node.js(childProcess)运行shell脚本

我想在我的node.js服务器上运行一个shell脚本,但没有发生任何事情…

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

另一个subprocess工作完美,但上面的过程不会。

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

如果我在terminal运行脚本,那么它的工作原理。 有任何想法吗? (chmod + x设置)

exec函数callback有传递给它的错误,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); }) 

/media/external/ + req.params.movi​​e作为参数运行您的play.sh shellscript。 输出可通过stdout,stderrvariables在callback中使用。

或者试试这个

 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 });`