java - 从 java 执行命令时使用 bash 函数

标签 java linux bash

我在我的 .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/

相关文章:

linux - 合并/加入两个表快速 linux 命令行

linux - 检查文件是否包含特定字符串以及是否已注释

php - Bash 如何从 PID 中获取完整的脚本名称

java - 20个从0到10的随机数字数组。如何统计其中的具体数字?

java - 导出处清洁问题

java - Spring boot Web服务/微服务和调度

linux - sed 删除包含多个引号的行中引号内的匹配项

java - 在java中打印一个Node对象

linux - 无法在 CentOS 上执行二进制文件 - Zabbix 外部脚本

linux - 在 bash 中的两个非常 'different' 位置之间移动文件