为什么从Java执行外部程序时会遇到这种异常

为什么从Java执行外部程序时会遇到这种异常,java,bash,Java,Bash,这是我的程序,我在mac系统上运行它 public static void main(String args[]) throws IOException { Scanner scanner=new Scanner(new File("annotated_sentences.csv")); int count=0; scanner.nextLine(); while (scanner.hasNextLine()) { String line = sc

这是我的程序,我在mac系统上运行它

public static void main(String args[]) throws IOException {
    Scanner scanner=new Scanner(new File("annotated_sentences.csv"));
    int count=0;
    scanner.nextLine();
    while (scanner.hasNextLine()) {
        String line = scanner.nextLine();

        String split[]= line.split(",");
        String text = split[4];
        text=text.replace("&", "#");
        Runtime run = Runtime.getRuntime();
        Process proc = run.exec(new String[]{"/bin/bash", "-c",
            "curl --data text="+text+" https://gate.d5.mpi-inf.mpg.de/aida/service/disambiguate > /StanfordFile/"+count});

        count++;
    }
    scanner.close();
}
我想处理大约30000行,但每次都是335行。例外情况出现了

Exception in thread "main" java.io.IOException: Cannot run program "/bin/bash": error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1042)
    at java.lang.Runtime.exec(Runtime.java:620)
    at java.lang.Runtime.exec(Runtime.java:485)
    at ProcessStanford.main(ProcessStanford.java:20)
Caused by: java.io.IOException: error=2, No such file or directory
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:185)
    at java.lang.ProcessImpl.start(ProcessImpl.java:134)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023)
    ... 3 more
线程“main”java.io.IOException中的异常:无法运行程序“/bin/bash”:错误=2,没有这样的文件或目录 位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1042) 位于java.lang.Runtime.exec(Runtime.java:620) 位于java.lang.Runtime.exec(Runtime.java:485) 位于ProcessStanford.main(ProcessStanford.java:20) 原因:java.io.IOException:error=2,没有这样的文件或目录 位于java.lang.UNIXProcess.forkAndExec(本机方法) 位于java.lang.UNIXProcess(UNIXProcess.java:185) 在java.lang.ProcessImpl.start(ProcessImpl.java:134)处 位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1023) ... 3个以上
原因是什么?

受这些评论的启发,我发现问题是因为我一次打开了太多进程,而“bin/bash”无法同时处理它们。经过几次测试,我发现在2分钟内运行100个进程是安全的(因为云服务处理请求的平均速度是1个请求/2分钟)。所以我只添加了一行
if(count%100==0)TimeUnit.MINUTES.sleep(2)问题就解决了。

这不是一个信号吗<代码>IOException:无法运行程序“/bin/bash”:错误=2,没有这样的文件或目录
您是在unix或windows下运行的吗?我在Mac系统上运行它,但前334没有问题。根目录上的bin文件夹中没有bash可执行文件。