访问手机版  

Linux常用命令|Linux培训学习|考试认证|工资待遇与招聘,认准超级网工!

招聘|合作 登陆|注册

网络工程师培训

当前位置:网络工程师 > 技术课程 > linux > 热点关注 > linux常用命令

Java执行Linux命令

时间:2019-08-11

linux 命令_linux命令_linux vi命令

原Java执行Linux命令

linux命令_linux vi命令_linux 命令

橙生北国阅读数:132019-07-14

linux命令_linux 命令_linux vi命令

大家知道命令行的强大就是在于linux命令,其可以形成执行序列,形成脚本。命令ctrl-\ctrl-n可以离开插入模式而回到正常模式下.换句话这个命令与相类似,但这个命令可以在任何模式下使用,就这一点而似乎是要比命令强大一些啊.。这种用法可以替换if exist了 :)3.||usage:第一条命令 || 第二条命令 [|| 第三条命令...]用这种方法可以同时执行多条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令。

linux命令_linux 命令_linux vi命令

public static String execShell(String shell) {
        StringBuilder result = new StringBuilder();
        Process process = null;
        BufferedReader bufferedReaderInfo = null;
        BufferedReader bufferedReaderError = null;
        try {
        	// 执行shell命令,返回了一个进程
            process = Runtime.getRuntime().exec(shell);
            // 等待命令执行完成
            process.waitFor();
            // 获取结果,正常返回是第一个,错误返回是第二个,返回结果只能有一个,要么正常执行,要么执行错误
            bufferedReaderInfo = new BufferedReader(new InputStreamReader(process.getInputStream()));
            bufferedReaderError = new BufferedReader(new InputStreamReader(process.getErrorStream()));
            String line;
            // 将返回结果存到一个stringbuilder里面,因为StringBuilder是可扩展的,所以不用String
            while (bufferedReaderInfo.readLine() != null || bufferedReaderError.readLine() != null) {
                if (bufferedReaderInfo.readLine() != null) {
                    line = bufferedReaderInfo.readLine();
                } else {
                    line = bufferedReaderError.readLine();
                }
                result.append(line + "\n");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            // 释放资源
            if (bufferedReaderError!=null){
                try {
                    bufferedReaderError.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bufferedReaderInfo!=null){
                try {
                    bufferedReaderInfo.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (process!=null){
                process.destroy();
            }
        }
        return result.toString();
    }

linux命令_linux 命令_linux vi命令

Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁进程的方法。在这里创建了一个Process类的对象,然后接收Runtime.exec(”“)的结果,是因为Runtime.exec("") 方法创建一个本机进程,并返回 Process 子类的一个实例。

所以这时候执行shell命令的就是这个Process子类的实例,然后阻塞linux命令,等待这个命令执行完成。执行完成之后获取这个进程的执行结果。最后把这个结果用BufferReader存起来放在StringBuilder里。最后返回出去。