如何通过Java启动linux脚本

linux脚本为:

echo nihao,wo ai $1 and $2

Java代码为:

public class JavaExecuShell {
    public static void main(String[] args) {
        try {
            //准备脚本
            String cmd = "sh /root/test/test.sh "+args[0]+" "+args[1]; 
            System.out.println("cmd = "+ cmd);
            Process proc = Runtime.getRuntime().exec(cmd);
            /**
             * 可执行程序的输出可能会比较多,而运行窗口的输出缓冲区有限,会造成waitFor一直阻塞。
             * 解决的办法是,利用Java提供的Process类提供的getInputStream,getErrorStream方法
             * 让Java虚拟机截获被调用程序的标准输出、错误输出,在waitfor()命令之前读掉输出缓冲区中的内容。
             */
            String flag ;
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            while ( (flag=bufferedReader.readLine()) != null){
                System.out.println("result ---- "+flag);
            }
            bufferedReader.close();
            /**
             * 等待脚本执行完成
             */
            proc.waitFor();
            
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

 

posted @ 2019-03-07 16:11  kpsmile  阅读(1114)  评论(0编辑  收藏  举报