中文字幕亚洲第一精品|精品国产免费一区二区|久久婷婷五月六月综合版|中文字幕熟妇久久久人妻|久久综合精品国产一区无码|国产成人精品永久免费视频|午夜亚洲国产精品理论片a级|久久精品一区二区三区无码护土

 訪問手機(jī)版  

Linux常用命令|Linux培訓(xùn)學(xué)習(xí)|考試認(rèn)證|工資待遇與招聘,認(rèn)準(zhǔn)超級(jí)網(wǎng)工!

招聘|合作 登陸|注冊(cè)

網(wǎng)絡(luò)工程師培訓(xùn)

當(dāng)前位置:網(wǎng)絡(luò)工程師 > 技術(shù)課程 > linux > 熱點(diǎn)關(guān)注 > linux常用命令

Java執(zhí)行Linux命令

時(shí)間:2019-08-11

linux 命令_linux命令_linux vi命令

原Java執(zhí)行Linux命令

linux命令_linux vi命令_linux 命令

橙生北國閱讀數(shù):132019-07-14

linux命令_linux 命令_linux vi命令

大家知道命令行的強(qiáng)大就是在于linux命令,其可以形成執(zhí)行序列,形成腳本。命令ctrl-\ctrl-n可以離開插入模式而回到正常模式下.換句話這個(gè)命令與相類似,但這個(gè)命令可以在任何模式下使用,就這一點(diǎn)而似乎是要比命令強(qiáng)大一些啊.。這種用法可以替換if exist了 :)3.||usage:第一條命令 || 第二條命令 [|| 第三條命令...]用這種方法可以同時(shí)執(zhí)行多條命令,當(dāng)碰到執(zhí)行正確的命令后將不執(zhí)行后面的命令,如果沒有出現(xiàn)正確的命令則一直執(zhí)行完所有命令。

linux命令_linux 命令_linux vi命令

public static String execShell(String shell) {
        StringBuilder result = new StringBuilder();
        Process process = null;
        BufferedReader bufferedReaderInfo = null;
        BufferedReader bufferedReaderError = null;
        try {
        	// 執(zhí)行shell命令,返回了一個(gè)進(jìn)程
            process = Runtime.getRuntime().exec(shell);
            // 等待命令執(zhí)行完成
            process.waitFor();
            // 獲取結(jié)果,正常返回是第一個(gè),錯(cuò)誤返回是第二個(gè),返回結(jié)果只能有一個(gè),要么正常執(zhí)行,要么執(zhí)行錯(cuò)誤
            bufferedReaderInfo = new BufferedReader(new InputStreamReader(process.getInputStream()));
            bufferedReaderError = new BufferedReader(new InputStreamReader(process.getErrorStream()));
            String line;
            // 將返回結(jié)果存到一個(gè)stringbuilder里面,因?yàn)镾tringBuilder是可擴(kuò)展的,所以不用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 類提供了執(zhí)行從進(jìn)程輸入、執(zhí)行輸出到進(jìn)程、等待進(jìn)程完成、檢查進(jìn)程的退出狀態(tài)以及銷毀進(jìn)程的方法。在這里創(chuàng)建了一個(gè)Process類的對(duì)象,然后接收Runtime.exec(”“)的結(jié)果,是因?yàn)镽untime.exec("") 方法創(chuàng)建一個(gè)本機(jī)進(jìn)程,并返回 Process 子類的一個(gè)實(shí)例。

所以這時(shí)候執(zhí)行shell命令的就是這個(gè)Process子類的實(shí)例,然后阻塞linux命令,等待這個(gè)命令執(zhí)行完成。執(zhí)行完成之后獲取這個(gè)進(jìn)程的執(zhí)行結(jié)果。最后把這個(gè)結(jié)果用BufferReader存起來放在StringBuilder里。最后返回出去。