Java調(diào)用linux shell腳本的方法
首先,我們需要增加用戶對(duì)該腳本的執(zhí)行權(quán)限,即
String cmdstring = "chmod a+x test.sh";
Process proc = Runtime.getRuntime().exec(cmdstring);
proc.waitFor(); //阻塞,直到上述命令執(zhí)行完
cmdstring = "bash test.sh"; //這里也可以是ksh等
proc = Runtime.getRuntime().exec(cmdstring);
// 注意下面的操作
string ls_1;
BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(proc.getInputStream());
while ( (ls_1=bufferedReader.readLine()) != null);
bufferedReader.close();
proc.waitFor();
為什么要有上面那段操作呢?
原因是:可執(zhí)行程序的輸出可能會(huì)比較多,而運(yùn)行窗口的輸出緩沖區(qū)有限,會(huì)造成waitFor一直阻塞。解決的辦法是,利用Java提供的Process類提供的getInputStream,getErrorStream方法讓Java虛擬機(jī)截獲被調(diào)用程序的標(biāo)準(zhǔn)輸出、錯(cuò)誤輸出,在waitfor()命令之前讀掉輸出緩沖區(qū)中的內(nèi)容。
希望大家能夠喜歡本文,有疑問請(qǐng)給我留言。
相關(guān)文章
基于Graphics2D drawImage圖片失真的解決方案
這篇文章主要介紹了基于Graphics2D drawImage圖片失真的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11JAVA HashSet和TreeSet 保證存入元素不會(huì)重復(fù)的操作
這篇文章主要介紹了JAVA HashSet和TreeSet 保證存入元素不會(huì)重復(fù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09JAVA集成Freemarker生成靜態(tài)html過程解析
這篇文章主要介紹了JAVA集成Freemarker生成靜態(tài)html過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06詳解如何在Spring Boot中實(shí)現(xiàn)容錯(cuò)機(jī)制
容錯(cuò)機(jī)制是構(gòu)建健壯和可靠的應(yīng)用程序的重要組成部分,它可以幫助應(yīng)用程序在面對(duì)異?;蚬收蠒r(shí)保持穩(wěn)定運(yùn)行,Spring Boot提供了多種機(jī)制來實(shí)現(xiàn)容錯(cuò),包括異常處理、斷路器、重試和降級(jí)等,本文將介紹如何在Spring Boot中實(shí)現(xiàn)這些容錯(cuò)機(jī)制,需要的朋友可以參考下2023-10-10說明Java的傳遞與回調(diào)機(jī)制的代碼示例分享
這篇文章主要介紹了說明Java的傳遞與回調(diào)機(jī)制的代碼示例分享,傳遞與回調(diào)機(jī)制是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09