Java で外部プロセスを起動する際は ProcessBuilder クラスを使いますが、 たまに処理が戻ってこない場合があります。 そんな場合に原因として考えられるのは、標準出力または標準エラー出力にバッファが溜まってしまっているという理由です。 例えば以下のコードの場合、標準エラー出力のバッファがいっぱいになっていた場合は proc.getInputStream() から処理が返って来なくなります。 String[] cmds = {"./foo.sh"}; ProcessBuilder pb = new ProcessBuilder(cmds); Process proc = pb.start(); String str; BufferedReader brstd = new BufferedReader(new InputStreamReader(proc.getInputStre