Java启动bash脚本问题
我已经看过很多如何运行bash脚本的例子,我尝试了几个,由于某种原因,我的脚本在某些功能上失败了 我有一个脚本Java启动bash脚本问题,java,bash,Java,Bash,我已经看过很多如何运行bash脚本的例子,我尝试了几个,由于某种原因,我的脚本在某些功能上失败了 我有一个脚本start\u update\u set\u up,由launcher运行: #!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" echo "Script directory:"$DIR nohup bash -c $DIR/start_update_set_up > $DIR/l
start\u update\u set\u 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
,If工作得非常好。但如果我尝试从Java运行它,sleep和curl函数就会失败。此外,Java在主脚本完成执行时等待某种原因,这是我不想要的,这就是我实现launcher的原因,也是我想通过nohup
将其与Java分离的原因
我试过:apache executor:
executor.execute(命令行,新的defaultexecutesulthandler())代码>
命令行是我的启动器
和运行时
Runtime runtime = Runtime.getRuntime();
try { Process process = runtime.exec("./launcher"); } catch (IOException e) {
logger.error("ExecuteException at running update script");
e.printStackTrace();
}
我错过了什么?如何将bash与Java分离?目前我无法测试它,但我认为脚本应该以exit语句结束,这可能就是Java代码等待的原因
至于sleep和curl函数失败,如果您不显示它们,我们将无法帮助您。sleep工作,如果使用processp=Runtime.getRuntime().exec(新字符串[]{“bash”,“-c”,“/launcher”})代码>。至于curl,如果从bash运行,则有输出。如果fromJava-result为空。让我试试一些公共主机,我会发布结果。没有输出。示例:curlhttp://google.com/
。它处于启动\更新\设置\转发到文件也不起作用。文件已创建,但为空。