NodeJS exec函数不完全运行Java类/ bash脚本

时间:2015-01-16 06:11:46

标签: node.js

每次条件为真时,我都试图从我的nodejs函数调用一个bashscript。然后bash脚本执行Java类文件。

我遇到了以下问题

  1. 代码正常
  2. NodeJs函数确实调用了bashscript
  3. bash脚本也执行Java类文件
  4. 但是,我认为它没有完成执行因为java代码的第一行是创建一个锁定文件,并在执行完成后删除锁定文件。但它只会创建锁定文件,程序之后永远不会输出任何内容。
  5. 以下nodeJS方法每60秒触发一次。 Java类文件大约需要80秒才能完成所以当第二次调用此方法时,它会杀死之前运行的进程吗?我想保持异步,但同时让exec方法完成?我尝试每120秒调用一次nodejs方法,这样可以使一切工作正常,但我无法将间隔时间从60秒更改为120.

    runbash.sh

    #!/bin/bash
    CP=/home/sanity/Data/free  # The classpath to use
    java -cp $CP JavaClassFile $1 $2 $3
    

    nodejs功能

    var exec = require('child_process').exec;
    var child;
    
    var checkDataMonitor = function(t,body,url,username,password) {
    
        var m = "checkDataMonitor";
    
        var servicestatus = body.serviceStatus["Data [free]"].available;
    
        if ("true" == servicestatus.toString()) { 
    
        var command="bash /home/sanity/Data/free/runbash.sh "+url+" "+username+" "+password;
        child = exec(command, function (error, stdout, stderr) {
        sys.print('stdout: ' + stdout);
        sys.print('stderr: ' + stderr);
        if (error !== null) {
        console.log('exec error: ' + error);
        }
       });
        throw new Error("serviceStatus.Data [free].available is true. serviceStatus.Data [free].available: " + util.inspect(servicestatus)); 
        }
    
        clog(t,m,"Exit. Success.");
    }
    

0 个答案:

没有答案