gpt4 book ai didi

java - 通过tomcat运行unix命令

转载 作者:行者123 更新时间:2023-11-28 22:42:39 25 4
gpt4 key购买 nike

我正在运行包含以下命令的脚本

#!/bin/bash
配置eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'

我有一个 java 包装器,用于使用 Runtime.exec(...) 执行此脚本。运行此 Java 代码始终正常。

问题是在 tomcat 下运行这个 java 方法时出现错误
script.sh:第 3 行:ifconfig:找不到命令
重启tomcat服务脚本完美运行了一段时间,之后这个问题又出现了。

我该如何解决这个问题?

编辑:Java 代码:

String executableScript = <path to script>/script.sh;
String line;
String output;
String[] command = {executableScript};
Process process = Runtime.getRuntime().exec(command);
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((line = input.readLine()) != null) {
output.append(line);
}
process.waitFor();
input.close();

最佳答案

错误 script.sh: line 3: ifconfig: command not found 表示 shell(由 tomcat 启动以运行命令)正在搜索其路径以查找 ifconfig 程序,它没有找到它。 shell 的 PATH 变量的值来自 Tomcat,它会从三个地方之一获取它:

  1. 如果 Tomcat 是由系统实用程序(例如 /etc/init.dsystemd)启动的,那么 tomcat 将从那里获取它的路径。

  2. 如果 tomcat 是通过您从终端运行命令启动的,则 tomcat 可能从您的环境中获取了它的路径。

  3. Tomcat(或在 tomcat 中运行的任何 java 类)可以在启动后更改其 PATH。

如果您发现当系统实用程序启动 tomcat 时脚本总是失败,而当从您的终端启动 tomcat 时它总是有效,那么问题是#1。 tomcat 从系统获取的 PATH 不包括包含 ifconfig 的目录。

如果您发现该脚本在启动 tomcat 后工作了一段时间,然后开始失败,直到您重新启动 tomcat,那么 tomcat 中的某些东西正在更改 tomcat 的 PATH 环境变量。 Tomcat 本身可能不包含执行此操作的任何代码,因此您应该查看已在 tomcat 中部署的应用程序。

关于java - 通过tomcat运行unix命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23673315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com