Java启动bash脚本问题

时间:2014-09-18 21:51:08

标签: java bash

我已经看过很多关于如何运行bash脚本的例子,我尝试了几个,由于某种原因,我的脚本在某些功能上失败了。

我有一个start_update_set_up运行的脚本launcher

#!/bin/bash

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo "Script directory:"$DIR
nohup bash -c $DIR/start_update_set_up > $DIR/logs/start_update_set_up.log &
echo "Laucher finish execution"

如果我直接从bash运行launcher - 如果效果很好。但是如果我尝试从Java运行它,睡眠和卷曲功能就会失败。此外,Java在我的主脚本完成执行时等待某些原因,我不想要这就是为什么我实现启动器,这就是为什么我要通过nohup将它从Java中分离出来

我试过:apache executor:

executor.execute(commandLine, new DefaultExecuteResultHandler()); 命令行是我的发射器。

和运行时。

Runtime runtime = Runtime.getRuntime(); 
try { Process process = runtime.exec("./launcher"); } catch (IOException e) {
   logger.error("ExecuteException at running update script");
   e.printStackTrace(); 
}

我错过了什么?如何从Java中分离出bash?

1 个答案:

答案 0 :(得分:1)

我目前无法对其进行测试,但我认为您的脚本应以exit语句终止,这可能就是您的Java代码等待的原因。

关于睡眠和卷曲功能失败,如果您不显示它们,我们无法帮助您。