¿Cómo matar runtime.exec?

Utilizo el siguiente código, en mi jframe para ejecutar un script de shell a través del programa java, pero cuando implemento otro método para detener el proceso de ejecución, este método se bloquea primero y no puedo detener mi programa. Por lo tanto, si ya eliminé el nuevo proceso, el problema es cómo obtener el pid del proceso y cómo ponerlo en segundo plano para matarlo.

public static void execShellCmd(String cmd) {
    try {

        testPath = getPath();

        System.out.println(cmd);
        Runtime runtime = Runtime.getRuntime();
        process = runtime.exec(new String[] { "sh",
                testPath + "/install.sh", cmd, "&" });
        int exitValue = process.waitFor();
        value = exitValue;
        System.out.println("exit value: " + exitValue);
        BufferedReader buf = new BufferedReader(new InputStreamReader(
                process.getInputStream()));
        String line = "";
        BufferedWriter bufferedWriter = null;
        while ((line = buf.readLine()) != null) {
            System.out.println("exec response: " + line);
            log = line;
            writeToFile(line);
        }
    } catch (Exception e) {
        System.out.println(e);
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta