我已经看过很多关于如何运行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?
答案 0 :(得分:1)
我目前无法对其进行测试,但我认为您的脚本应以exit语句终止,这可能就是您的Java代码等待的原因。
关于睡眠和卷曲功能失败,如果您不显示它们,我们无法帮助您。