nodejs exec因sighup信号失败

时间:2017-11-17 06:11:36

标签: node.js

我在nodejs中通过exec创建一个child_process时遇到错误。 它在0.12.x节点版本下工作正常,只有更改是nodejs升级到6.11.3。这个错误发生在10次中有2次无法找到原因和解决方案。提前致谢

代码详情:

   var exec = require('child_process').exec;
   cmd = 'sh /home/ec2-user/bin/lldn start';
   exec(cmd,{ shell: '/bin/bash'},
    function (error, stdout, stderr) {
        if (error) {
            deferred.reject({
                stdout: stdout,
                stderr: stderr,
                error: error,
                cmd: cmd
            });
        } else {
            deferred.resolve({
                stdout: stdout,
                stderr: stderr,
                error: error,
                cmd: cmd
            });
        }
    });

错误详情:

  msg="{ Error: Command failed: sh /home/ec2-
user/logu/datanode/bin/lldn start

at ChildProcess.exithandler (child_process.js:198:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:920:16)
at Process.ChildProcess._handle.onexit 
(internal/child_process.js:230:5)
 killed: false,
code: null,
 signal: 'SIGHUP',
cmd: 'sh /home/ec2-user/logu/datanode/bin/lldn start' }"

1 个答案:

答案 0 :(得分:0)

我在使用不同的命令时遇到了同样的问题,经过一些挖掘后我发现exec隐藏了正确的错误。

我能够显示在以下位置添加记录器的真正错误:

function (error, stdout, stderr) {
  // Not all three vars are needed, but better to show more
  console.log(error, stdout, stderr);
  if (error) {
    deferred.reject({

我知道这不是您特定问题的解决方案,但我希望这会有所帮助。