私は流星からサーバー側を実行しているbashスクリプトを持っています。私は、 'ls'を実行して期待される応答を返すことで、シェルコマンドを正常に実行できることをテストしました。しかし、シェルスクリプトを実行すると、出力はサーバコンソールに記録されず、意図したスクリプトの効果は成功しません。私はstderr、stdout、およびerrorを表示していますが、スクリプトを実行すると何も表示しません。それは現在、/ binに/ lsとコメントアウトされているがMeteorからbashスクリプトサーバー側を実行する際の問題
Meteor.methods({
grade: function(unittest, code) {
this.unblock();
var sys = Npm.require('sys');
var exec = Npm.require('child_process').exec;
// exec('/bin/ls /srv/srcalyzer/scripts', function(error,stdout,stderr){
// console.log('error: ',error);
// console.log('stdout: ',stdout);
// console.log('stderr: ',stderr);
// });
console.log('running grade')
exec('/bin/bash /srv/srcalyzer/scripts/grade.sh', function(error,stdout,stderr){
console.log('error: ',error);
console.log('stdout: ',stdout);
console.log('stderr: ',stderr);
});
console.log('just finished.');
},
は/いくつかの/パスは、コンソールに予想される出力をログに記録します。しかし、私が/ bin/bash /path/to/.shを実行すると、私が知っているのは適切です。コンソール出力は
I20161207-15:22:07.031(-5)? running grade
I20161207-15:22:07.045(-5)? just finished.
ようなスクリプトが(〜15〜20秒)を実行するために、短い時間がかかるんに見えます。これが適切かどうかは不明です。
何が起こっているのか理解してもらえますか?
あなたが任意のログが表示されないように、私の推測では、 'grade.sh'の実行が終了されることはありませんコンソールの中で – Khang
@Khang私はそれをしばらく置いておき、そのような場合には、スクリプトの冒頭にファイルに現在の時刻の行を追加する行を追加しました。これは、ファイルが実行を開始しないことを意味します。 –