Java - 等待shell在进程结束前完成tar任务

时间:2018-03-15 02:49:48

标签: java shell tar

我正在使用java的“Process”命令来执行shell脚本。

在这个shell脚本中,它会将文件(从文件夹)分解为更小的Mbs。

一旦文件被分解,我将使用SMTP通过电子邮件邮寄这些文件。

问题是,我的邮件功能在shell脚本实际完成砍掉我的文件之前运行。最后,没有发送电子邮件(因为显然文件夹是空的)。

以下是我的代码:

try {       
     log.info("Going to run the runtime.getRuntime() to execute tar zip files");
     String tarLocation = prop.getProperty("tarzipfile.location") + prop.getProperty("tarshell.name");
     Process p = Runtime.getRuntime().exec(new String[] {"cmd", "/c", tarLocation}); 
     p.waitFor(); //This waitfor only waits for process, but not the shell to complete
     log.info("exit: " + p.exitValue());
     p.destroy();
} catch(Exception e) {
      log.info("ERROR: Runtime error failed to tar files", e);
}

robot.process(); //Send out mail

我的tar文件

cd <my file dir>
tar cvzf - <my other file dir> | split --bytes=4MB - archive.tar.gz

除了让它“睡眠”几秒钟之外,有什么好的方法可以解决这个问题?

0 个答案:

没有答案