用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.movie作为参数运行您的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 });`