<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • java程序中如何調(diào)用linux命令

    時(shí)間:2024-08-27 19:47:34 JAVA認(rèn)證 我要投稿
    • 相關(guān)推薦

    java程序中如何調(diào)用linux命令

      作為一個(gè)Java開發(fā)人員,有些常用的Linux命令必須掌握。即時(shí)平時(shí)開發(fā)過程中不使用Linux(Unix)或者mac系統(tǒng),也需要熟練掌握Linux命令。因?yàn)楹芏喾⻊?wù)器上都是Linux系統(tǒng)。所以,要和服務(wù)器機(jī)器交互,就要通過shell命令。本文為大家分享的就是java程序中怎么調(diào)用linux命令。

      Java調(diào)用shell

      Java語言以其跨平臺(tái)性和簡易性而著稱,在Java里面的lang包里(java.lang.Runtime)提供了一個(gè)允許Java程序與該程序所運(yùn)行的環(huán)境交互的接口,這就是Runtime類,在Runtime類里提供了獲取當(dāng)前運(yùn)行環(huán)境的接口。

      其中的exec函數(shù)返回一個(gè)執(zhí)行shell命令的子進(jìn)程。exec函數(shù)的具體實(shí)現(xiàn)形式有以下幾種:

      public Process exec(String command) throws IOException

      public Process exec(String command,String[] envp) throws

      IOException

      public Process exec(String command,String[] envp,File dir) throws

      IOException

      public Process exec(String[] cmdarray) throws IOException

      public Process exec(String[] cmdarray, String[] envp) throws

      IOException

      public Process exec(String[] cmdarray, String[] envp,File dir)

      throws IOException

      我們?cè)谶@里主要用到的是第一個(gè)和第四個(gè)函數(shù),具體方法很簡單,就是在exec函數(shù)中傳遞一個(gè)代表命令的字符串。exec函數(shù)返回的是一個(gè)Process類型的類的實(shí)例。Process類主要用來控制進(jìn)程,獲取進(jìn)程信息等作用。(具體信息及其用法請(qǐng)參看Java doc)。

      1)執(zhí)行簡單的命令的方法:

      代碼如下:

      try

      String commands = "ls -l";

      Process process = Runtime.getRuntime().exec (commands);

      // for showing the info on screen

      InputStreamReader ir=new

      InputStreamReader(process.getInputStream());

      BufferedReader input = new BufferedReader (ir);

      String line;

      while ((line = input.readLine ()) != null){

      System.out.println(line);

      }//end try

      catch (java.io.IOException e){

      System.err.println ("IOException " + e.getMessage());

      } 上面的代碼首先是聲明了一個(gè)代表命令的字符串commands,它代表了ls -l

      這個(gè)命令。之后我們用Runtime.getRuntime().exec(commands)來生成一個(gè)子進(jìn)程來執(zhí)行這個(gè)命令,如果這句話運(yùn)行成功,則命令 ls -l 運(yùn)行成功(由于沒有讓它顯示,不會(huì)顯示ls -l

      的結(jié)果)。后面的流操作則是獲取進(jìn)程的流信息,并把它們一行行輸出到屏幕。2)執(zhí)行帶有參數(shù)的命令(尤其是參數(shù)需要用引號(hào)的)時(shí)則需要用String的數(shù)組來表示整個(gè)命令,而且要用轉(zhuǎn)義符把引號(hào)的特殊含義去除,例如我們要執(zhí)行find / -name "*mysql*" -print 時(shí),用如下代碼

      try

      String[] commands = new

      String[]{"find",".","-name","*mysql*","-print"};

      Process process = Runtime.getRuntime().exec (commands);

      InputStreamReader ir=new

      InputStreamReader(process.getInputStream());

      BufferedReader input = new BufferedReader (ir);

      String line;

      while ((line = input.readLine ()) != null){

      System.out.println(line);

      }//end try

      catch (java.io.IOException e){

      System.err.println ("IOException " + e.getMessage());

      Java 可以通過 Runtime 調(diào)用Linux命令,形式如下:

      Runtime.getRuntime().exec(command)

      但是這樣執(zhí)行時(shí)沒有任何輸出,因?yàn)檎{(diào)用 Runtime.exec 方法將產(chǎn)生一個(gè)本地的進(jìn)程,并返回一個(gè)Process子類的實(shí)例(注意:Runtime.getRuntime().exec(command)返回的是一個(gè)Process類的實(shí)例)該實(shí)例可用于控制進(jìn)程或取得進(jìn)程的相關(guān)信息。

      由于調(diào)用 Runtime.exec 方法所創(chuàng)建的子進(jìn)程沒有自己的終端或控制臺(tái),因此該子進(jìn)程的標(biāo)準(zhǔn)IO(如stdin,stdou,stderr)都通過 Process.getOutputStream(),Process.getInputStream(), Process.getErrorStream() 方法重定向給它的父進(jìn)程了。

      用戶需要用這些stream來向子進(jìn)程輸入數(shù)據(jù)或獲取子進(jìn)程的輸出,下面的代碼可以取到 linux 命令的執(zhí)行結(jié)果:

      try {

      String[] cmd = new String[]{”/bin/sh”, “-c”, ” ls “};

      Process ps = Runtime.getRuntime().exec(cmd);

      BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));

      StringBuffer sb = new StringBuffer();

      String line;

      while ((line = br.readLine()) != null) {

      sb.append(line).append(”\n”);

      }

      String result = sb.toString();

      System.out.println(result);

      } catch (Exception e) {

      e.printStackTrace();

      }

    【java程序中如何調(diào)用linux命令】相關(guān)文章:

    java調(diào)用cmd命令01-29

    java開發(fā)必會(huì)的Linux命令03-24

    Linux中的more命令解讀202405-06

    linux命令中su和sudo區(qū)別03-24

    如何編譯java程序03-05

    linux常用基本命令(文件處理命令)11-29

    Linux中常用操作命令03-06

    Linux硬件信息命令大全03-24

    Linux日常使用命令大全03-27

    主站蜘蛛池模板: 久久精品夜夜夜夜夜久久| 国产精品麻豆高清在线观看| 精品久久久噜噜噜久久久| 中文字幕精品一区影音先锋| 人人妻人人澡人人爽欧美精品| 国产天天综合永久精品日| WWW国产精品内射老师| 亚洲一日韩欧美中文字幕欧美日韩在线精品一区二 | 精品偷自拍另类在线观看| 日韩精品一二三四区| 国产精品热久久无码av| 四虎精品8848ys一区二区| 国产成人精品免费视频动漫| 国产亚洲精品a在线无码| 久久亚洲精品无码AV红樱桃| 尤物yw午夜国产精品视频| 亚洲精品国产va在线观看蜜芽| 精品无码久久久久久久动漫| 国产精品青草视频免费播放| 国产精品 一区 在线| 91精品国产福利在线观看| 四虎最新永久在线精品免费| 久久久国产精品福利免费| 国内精品久久国产大陆| 国内精品手机在线观看视频| 99久久久精品| 99视频在线观看精品| 国产精品成人观看视频国产| 国产精品久久久久久| 久久九九亚洲精品| 91精品国产高清久久久久久91 | 久久久久人妻一区精品果冻| 久久精品无码一区二区三区日韩| 国产亚洲精品国看不卡| 精品国产三级a乌鸦在线观看| 精品国产不卡一区二区三区| 精品国内自产拍在线观看| 久久久久九九精品影院| 四虎影视永久在线精品免费| 亚洲综合国产精品第一页| 精品无人码麻豆乱码1区2区|