Node.jsサーバーでシェルスクリプトを実行したいのですが、何も起こりませんでした...
childProcess.exec('~/./play.sh /media/external/' + req.params.movie, function() {}); //not working
別のchildProcessは完全に機能しますが、上記のプロセスは機能しません。
childProcess.exec('ls /media/external/', movieCallback); //works
ターミナルでスクリプトを実行すると、動作します。何か案は? (chmod + xが設定されています)
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);
}
});
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
});`