我正在尝试从 java 内部运行一个 bash 脚本,该脚本将在 JVM 退出后继续存在。我目前的尝试看起来像这样:
String[] linCmd = {"/bin/bash", "-c", "\"set +m; shopt -u huponexit; nohup "
+ "myScript.sh 2>&1 > /dev/null &\""};
pb = new ProcessBuilder(linCmd);
//Other stuff to monitor and start pb
但我没有看到 myScript.sh 实际启动(在 top 或 ps 中)。顺便说一句,单独的 bash shell 的原因是因为我需要 set +m
并且不想用它破坏原始的。此外,nohup
和 shopt -u huponexit
可能是多余的,但我已经单独尝试过,但似乎无法正常工作。
有什么想法吗?
最佳答案
尝试不在“set +m ... &”周围添加额外的引号 通过将整个内容作为该数组的第三个元素,您告诉 java 这整个内容是第三个参数。引号应该是不需要的,我认为它们可能会干扰。
关于java - 从 java 内部启动一个 bash 脚本,它在 jvm 退出后继续存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6797713/