【问题标题】:Executing UNIX command using Java使用 Java 执行 UNIX 命令
【发布时间】:2016-08-17 09:00:25
【问题描述】:

我正在尝试从 Java 运行 Unix find 命令,但它给了我以下错误。 请就此提出正确的方法-

java -cp automation.jar com.amex.scoring.dao.HiveDAO

/bin/sh: find /axp/rim/nemo/dev/logs -type f -mtime -5 -exec ls {} \;: 没有那个文件或目录

Java 代码

private static final String COMMAND = "find /axp/rim/nemo/dev/logs  -type f -mtime -5 -exec ls {} \\;";
private static final String SHELL_NAME = "/bin/sh";

public static void main(String[] args) throws IOException {
    final ProcessBuilder pb = new ProcessBuilder(SHELL_NAME,COMMAND);
    pb.redirectErrorStream(true);
    final Process process = pb.start();
    final BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
}

【问题讨论】:

  • @Jens,很抱歉没有找到你。你想让我在哪里添加完整路径?
  • 到 find 命令,我也认为是 ls 命令
  • 不必要的双重转义:\\;

标签: java unix


【解决方案1】:

看看:

package com.raj.shell;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class ExecuteShellComand {

    public static void main(String[] args) {

        ExecuteShellComand obj = new ExecuteShellComand();

        String output = obj.executeCommand();

        System.out.println(output);

    }

    private String executeCommand() {

        StringBuffer output = new StringBuffer();

        try {

            Process p = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", "cd && cat test.txt | grep Hello"});
            p.waitFor();
            BufferedReader reader
                    = new BufferedReader(new InputStreamReader(p.getInputStream()));

            String line = "";
            while ((line = reader.readLine()) != null) {
                output.append(line + "\n");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        return output.toString();

    }

}

【讨论】:

  • 考虑添加一些解释;指出您的意见为何有效;而他的不是。仅仅删除代码并不是一个好的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多