gpt4 book ai didi

java - Unix 脚本在 Java Process Runtime.exec() 中不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:25:48 26 4
gpt4 key购买 nike

我正在 Spring Web MVC 中开发一个应用程序,我需要在其中执行一些 linux 脚本..

我正在使用 tomcat 版本 5.5 在 linux 中运行我的项目..

我的代码是这样的:

Process proc = runtime.exec("sudo cp /var/tmp/mailserverfiles/editinterface.txt /etc/sysconfig/network-scripts/editinterface.txt");
InputStream inputstream = proc.getInputStream();
InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
String line;
while ((line = bufferedreader.readLine()) != null) {
System.out.println("\nOUTPUT = " + line);
}
System.out.print("\nbefore execute6");
try {
if (proc.waitFor() != 0) {
System.err.println("\nexit value = " + proc.exitValue());
}
} catch (InterruptedException e) {
System.err.println("\nERROR = " + e);
}

这里我想使用 linux 脚本将一个特定文件从一个位置复制到另一个位置..

但是当我执行这部分时,我得到了

exit value = 1

作为输出..我也尝试将此脚本放入 .sh 文件并尝试从 Java 代码在此处执行该 shell 脚本,但我得到相同的结果..

谁能告诉我,这是什么原因?

提前致谢..

最佳答案

我猜 sudo 需要一个交互式终端来询问密码。由于没有交互式终端,它会向 stderr 打印一条错误消息并以退出代码 1 退出。您没有读取错误流,因此您不会看到它可能打印的任何消息。

在任何情况下,您肯定都想阅读错误流。现在这样做将帮助您诊断此时出了什么问题。

关于java - Unix 脚本在 Java Process Runtime.exec() 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1733501/

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