我在我的 .bashrc
中编写了一个 bash 函数,它负责更新我的 java jar 文件并使用新的 jar 重新启动应用程序,作为一种自动更新机制。
我正在尝试使用以下 java 片段从我的 java 代码中执行我的函数:
Runtime.getRuntime().exec(new String[] { "/bin/bash", "-c", "update-logbot" });
这将返回 127
的退出代码,表明它找不到该函数。
我如何从 java 应用程序中执行这个 bash 函数?
最佳答案
如果我的理解是正确的,你已经有一个 bash 脚本来关闭 java/jar 程序并删除它并下载新的新 jar/java 程序并执行它。
但是您希望使用 Java 程序实现相同的目的。
要实现这一点,您需要一个 bash 脚本来将新程序下载到与旧 java 程序相同的文件夹中,并将 jar 名称更改为该程序的下一个迭代版本。
在程序中调用下面的脚本
proc = Runtime.getRuntime().exec("sh/home/***/Documents/script.sh");
在确认 jar/java 程序复制操作成功后,调用另一个脚本来启动新的 java/app(提供新程序的延迟启动,以便新程序在旧程序退出之前不会启动)
在新的java程序中检查是否存在旧版本的程序并执行脚本删除或通过java程序删除它
您可能还需要模拟用户权限(通过调用的脚本模拟用户)来实现此功能
关于java - 从 java 执行命令时使用 bash 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34340087/