亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

JAVA認證

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

時間:2024-06-13 19:10:23 JAVA認證 我要投稿
  • 相關(guān)推薦

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

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

  Java調(diào)用shell

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

  其中的exec函數(shù)返回一個執(zhí)行shell命令的子進程。exec函數(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

  我們在這里主要用到的是第一個和第四個函數(shù),具體方法很簡單,就是在exec函數(shù)中傳遞一個代表命令的字符串。exec函數(shù)返回的是一個Process類型的類的實例。Process類主要用來控制進程,獲取進程信息等作用。(具體信息及其用法請參看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());

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

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

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

  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í)行時沒有任何輸出,因為調(diào)用 Runtime.exec 方法將產(chǎn)生一個本地的進程,并返回一個Process子類的實例(注意:Runtime.getRuntime().exec(command)返回的是一個Process類的實例)該實例可用于控制進程或取得進程的相關(guān)信息。

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

  用戶需要用這些stream來向子進程輸入數(shù)據(jù)或獲取子進程的輸出,下面的代碼可以取到 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)文章:

Linux常用命令匯總03-19

如何使用ping命令07-16

關(guān)于dd命令備份Linux系統(tǒng)的6個例子07-19

JAVA認證基礎(chǔ)知識:基于反射機制的服務(wù)代理調(diào)用07-18

關(guān)于OrCad原理圖設(shè)計中模塊化的調(diào)用07-12

管理磁盤diskpart命令07-19

excel中如何計算工齡07-22

工齡在excel中如何計算07-22

Linux認證考試科目02-02

Java與Java web有什么不同01-22