gpt4 book ai didi

java - Unix 脚本不使用 Process Runtime 在 Java 中运行

转载 作者:行者123 更新时间:2023-11-28 22:46:12 24 4
gpt4 key购买 nike

我正在开发一个应用程序,需要从 Java 代码运行一些 unix 脚本。

我使用的平台是 Unix,Tomcat 5.5..

为此,我的示例代码如下:

Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("netstat -i|tail -n +3|cut -d ' ' -f1");
System.out.println("exitValue = "+proc.exitValue());

我已经把所有权限给tomcat用户

现在,我的程序输出案例是:

Script                         exitValue()
======= ============
netstat -i 0
netstat -i|tail -n +3 4
sudo netstat -i 1
sudo netstat -i|tail -n +3 1

上表表明只有第一个脚本在 unix 中执行,所有其他脚本都失败了。

我不确定,但我只是假设我必须以根用户身份运行 Tomcat 服务器..

谁有其他解决办法,请回复..

提前致谢...

最佳答案

如果我没记错的话,管道(“|”)由 shell 处理。 Java 可能根本不会处理它们......

有一些解决方法:

  • 将您的命令作为参数运行 bash:

    runtime.exec("bash -c\"netstat -i|tail -n +3|cut -d ' ' -f1\"");

  • 编写运行所有这些命令的 bash 脚本并从 Java 运行此脚本:

    #!/bin/bash
    netstat -i|tail -n +3|cut -d ' ' -f1

  • 在 Java 中创建管道:读取 netstat -i 的输出并在 Java 中将其连接到 tail -n +3 ...

关于java - Unix 脚本不使用 Process Runtime 在 Java 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1722559/

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