34

我想在我的 node.js 服务器上运行一个 shell 脚本,但是什么也没发生……

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

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

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

如果我在终端中运行脚本,那么它可以工作。有任何想法吗?(设置了chmod +x)

4

2 回答 2

59

exec 函数回调具有传递给它的错误、标准输出和标准错误参数。看看他们是否可以通过将它们吐到控制台来帮助您诊断问题:

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);
    }
});
于 2013-09-30T21:14:02.880 回答
5
exec('sh ~/play.sh /media/external/' + req.params.movie ,function(err,stdout,stderr){
      console.log(err,stdout,stderr);
 })

play.sh/media/external/+req.params.movi​​e 作为参数运行你的 shellscript。输出可通过回调中的 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
});`
于 2015-10-28T06:14:28.087 回答