使用Java执行UNIX命令

时间:2016-08-17 09:00:26

标签: java unix

我正在尝试从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);
    }
}

1 个答案:

答案 0 :(得分: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();

    }

}