java - 从 java 内部启动一个 bash 脚本,它在 jvm 退出后继续存在

标签 java linux bash process processbuilder

我正在尝试从 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 并且不想用它破坏原始的。此外,nohupshopt -u huponexit 可能是多余的,但我已经单独尝试过,但似乎无法正常工作。

有什么想法吗?

最佳答案

尝试不在“set +m ... &”周围添加额外的引号 通过将整个内容作为该数组的第三个元素,您告诉 java 这整个内容是第三个参数。引号应该是不需要的,我认为它们可能会干扰。

关于java - 从 java 内部启动一个 bash 脚本,它在 jvm 退出后继续存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6797713/

相关文章:

Java 添加按钮 GUI 增长数组

由于未释放 Linux RAM 磁盘缓存导致的 Java OutOfMemoryError

linux - 为什么 seccomp 禁止我正常的系统调用

linux - 在进程替换中的命令失败后,bash pipefail 仍在运行 w/set -e

linux - 根据文本文件名创建目录名

java - java中表达式树的中序遍历

java - 如何替换给定模式中的 '0' 值?

java - PropertiesConfiguration 和 PropertyResourceBundle 在 Windows 和 Linux 上的行为不同

linux - 为什么在 Linux 中使用 ./file2 后得到 'permission denied'?

java - 如何让 Java 在 Linux 中使用串口?