導航:首頁 > 程序命令 > java調用linux系統命令

java調用linux系統命令

發布時間:2023-05-17 00:03:16

㈠ 如何在java程序中調用linux命令或者shell腳本

//實現遠程連接Connectionconn=newConnection(scpAddr,Integer.parseInt(scpPort));conn.connect();//連接logger.debug("登陸遠遲宴程伺服器:"+scpUserName+","+scpPassword);//登陸遠程伺服器的用戶名密碼booleanisAuthed=conn.authenticateWithPassword(scpUserName,scpPassword);//登陸失敗if(!isAuthed){logger.debug("登陸遠程伺服器失敗");returnfalse;}SessionsshSession=conn.openSession();logger.debug("cd/搭念&&rm-f"知旦困+file+"&&pwd");//linux命令sshSession.execCommand("cd/&&rm-f"+file+"&&pwd");//執行sshSession.close();conn.close();

㈡ 如何在java程序中調用linux命令或者shell腳本

java程序是提供了這個一方法,Processpro=Runtime.getRuntime().exec(cmds);
但是一般來說,盡量去用一些其他腳本(lua,shell,python)去執行一系列linux命令比較靈活, 而且耗費資源少。但是Runtime.getRuntime().exec()這種調用方式在java虛擬機中是十分消耗資源的,即使命令可以很快的執行完畢,頻繁的調用時創建進程消耗十分可觀。
java虛擬機執行這個命令的過程是,首先克隆一條和當前虛擬機擁有一樣環境變數的進程,再用這個新的進程執行外部命令,最後退出這個進程。頻繁的創建對CPU和內存的消耗很大。


下面是一個調用linux命令的例子:

publicclassTest{
publicstaticvoidmain(String[]args)throwsException{
String[]cmds={"/bin/sh","-c","ps-ef|grepjava"};
Processpro=Runtime.getRuntime().exec(cmds);
pro.waitFor();//阻塞,直到上述命令執行完
InputStreamin=pro.getInputStream();
BufferedReaderread=newBufferedReader(newInputStreamReader(in));
Stringline=null;
while((line=read.readLine())!=null){
System.out.println(line);
}
}
}

註:參數中逗/bin/sh逗 逗-c逗 是可以用shell執行指定的命令的意思
這里/bin/sh -cps -ef|grep java,會執行ps linux命令

㈢ java怎麼調用linux的命令怎麼輸入一條命令讓linux用終端運行,然後獲得返回的文本

用java的process類了。
process這個類是一個抽象類,封裝了一個進程(你在調用linux的命令或者shell腳本就是為了執行一個在linux下執行的程序,所以應該使用process類)。
process類提供了執行從進程輸入,執行輸出到進程,等待進程完成,檢查進程的推出狀態,以及shut down掉進程。

㈣ 如何用java調用linux shell命令

**
* 運行shell腳本
* @param shell 需要運行的shell腳本
*/
public static void execShell(String shell){
try {
Runtime rt = Runtime.getRuntime();
rt.exec(shell);
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 運行shell
*
* @param shStr
* 需要執行的shell
* @return
* @throws IOException
*/
public static List runShell(String shStr) throws Exception {
List<String> strList = new ArrayList();

Process process;
process = Runtime.getRuntime().exec(new String[]{"/bin/sh","-c",shStr},null,null);
InputStreamReader ir = new InputStreamReader(process
.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line;
process.waitFor();
while ((line = input.readLine()) != null){
strList.add(line);
}

return strList;
}

㈤ java如何連接linux系統後台執行相應的命令

java提供的Runtime 這個類來執行系統命令的,用法如下:

1.得到Runtime對象。
public void execCommand(String command) throws IOException {
// start the ls command running
//String[] args = new String[]{"sh", "-c", command};
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(command); //這句話就是shell與高級語言間的調用
//如果有參數的話可以用另外一個被重載的exec方法
//實際上這樣執行時啟動了一個子進程,它沒有父進程的控制台
//也就看不到輸出,所以需要用輸出流來得到shell執行後的輸出

2.得到輸入流。
InputStream inputstream = proc.getInputStream();
InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
// read the ls output
String line = "";
StringBuilder sb = new StringBuilder(line);
while ((line = bufferedreader.readLine()) != null) {
//System.out.println(line);
sb.append(line);
sb.append('\n');
}
//tv.setText(sb.toString());
//使用exec執行不會等執行成功以後才返回,它會立即返回
//所以在某些情況下是很要命的(比如復制文件的時候)
//使用wairFor()可以等待命令執行完成以後才返回
try {
if (proc.waitFor() != 0) {
System.err.println("exit value = " + proc.exitValue());
}
}
catch (InterruptedException e) {
System.err.println(e);
}
}
}

㈥ java調用linux命令切換目錄

.
pwd命令 pwd命令用於顯示用戶當前所處的工作目錄,格式為「pwd [選項]」。
2.
cd命令 cd命令用於切換或戚工作路徑,格式為「cd [目隱納錄名稱]」。 這個命令應該是最常用的一個Linux命令了。可以通過cd命令迅衫攜陵速、靈活地切換到不同的工作目錄。除了

㈦ 怎麼用java代碼運行linux命令

以下方法支持Linux和windows兩個系統的命令行調用。還用到了apache的lang工具包commons-lang3-3.1.jar來判斷操作系統類型、也用到了和log4j-1.2.16.jar來列印日誌。至於rm -rf 是否能成功刪除文件,可以手動去調用命令行試試。

privateStringcallCmd(Stringcmd)throwsInterruptedException,UnHandledOSException,ExecuteException{
if(SystemUtils.IS_OS_LINUX){
try{
//使用Runtime來執行command,生成Process對象
Processprocess=Runtime.getRuntime().exec(
newString[]{"/bin/sh","-c",cmd});
intexitCode=process.waitFor();
//取得命令結果的輸出流
InputStreamis=process.getInputStream();
//用一個讀輸出流類去讀
InputStreamReaderisr=newInputStreamReader(is);
//用緩沖器讀行
BufferedReaderbr=newBufferedReader(isr);
Stringline=null;
StringBuildersb=newStringBuilder();
while((line=br.readLine())!=null){
System.out.println(line);
sb.append(line);
}
is.close();
isr.close();
br.close();
returnsb.toString();
}catch(java.lang.NullPointerExceptione){
System.err.println("NullPointerException"+e.getMessage());
logger.error(cmd);
}catch(java.io.IOExceptione){
System.err.println("IOException"+e.getMessage());
}
thrownewExecuteException(cmd+"執行出錯!");
}

if(SystemUtils.IS_OS_WINDOWS){
Processprocess;
try{
//process=newProcessBuilder(cmd).start();
String[]param_array=cmd.split("[\s]+");
ProcessBuilderpb=newProcessBuilder(param_array);
process=pb.start();
/*process=Runtime.getRuntime().exec(cmd);*/
intexitCode=process.waitFor();
InputStreamis=process.getInputStream();
InputStreamReaderisr=newInputStreamReader(is);
BufferedReaderbr=newBufferedReader(isr);
Stringline;
StringBuildersb=newStringBuilder();

while((line=br.readLine())!=null){
System.out.println(line);
sb.append(line);
}
is.close();
isr.close();
br.close();
returnsb.toString();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
thrownewExecuteException(cmd+"執行出錯!");
}

thrownewUnHandledOSException("不支持本操作系統");
}

㈧ 如何在java程序中調用linux命令或者shell腳本

public static String execShell(String shellString){
System.out.println("將要執行的shell語句是: "+shellString);
String isOK="ok";
try{
Process process=Runtime.getRuntime().exec(shellString);

BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line="";
while((line = input.readLine()) != null){
System.out.println(line);
}
input.close();
int exitValue=process.waitFor();
if(0!=exitValue){
isOK="no";
System.err.println("call shell failed.errorcodeis:"+exitValue);
}
}catch(Throwable e){
e.printStackTrace();
}

return isOK;
}

這是我在java中用過的一個調用shell的函數,你可以試試;執行成功返回ok,執行失敗返回no

㈨ 如何在java程序中調用linux命令或者shell腳本

在java程序中如何調用linux的命令?如褲棚渣何調用shell腳本呢?

這里不得不提到java的process類了。

process這個類是一個抽象類,封裝了一個進程(你在調用linux的命令或者shell腳本就是為了執行一個在linux下執行的程序,所以應該使用process類)。

process類提供了執行從進程輸入,執行輸出到進程,等待進程完成,檢查進程的推出狀態,以及shut down掉進程。

至於詳細的process類的介紹放在以後介紹。

另外還要注意一個類:Runtime類,Runtime類是一個與JVM運行時環境有關的類,這個類是Singleton的。

這里用到的Runtime.getRuntime()方法是取得當前JVM的運行環境,也是java中唯一可以得到運行環境的和做方法。(另外,Runtime的大部分方法都是實例方法,也就是說每次運行調用的時候都需要調用到getRuntime方法)

下面說說Runtime的exec()方法,這里要注意的有一點,就是public Process exec(String [] cmdArray, String [] envp);這個方法中cmdArray是一個執行的命令和參數的字元串數組,數組的第一個元素是要執行的命令往後依次都是命令的參數,envp感覺應該和C中的execve中的環境變數是一樣的,envp中使用的是name=value的方式。

下面說一下,如何使用process來調用shell腳本

例如,我需要在linux下實行linux命令:sh test.sh,下面就是執行test.sh命令的方法:

這個var參數就是日期這個201102包的名字。

String shpath="/test/test.sh"; //程序路徑

Process process =null;

String command1 = 「chmod 777 」 + shpath;
process = Runtime.getRuntime().exec(command1);
process.waitFor();

String var="201102"; //參數

String command2 = 「胡悄/bin/sh 」 + shpath + 」 」 + var;
Runtime.getRuntime().exec(command2).waitFor();

㈩ java程序里如何調用linux命令

Java可以通過Runtime調用Linux命令御逗咐,形式如下:

  1. Runtime.getRuntime().exec(command)

    但是這樣執行時沒有任何輸出,因為調用Runtime.exec方法將產生一個本地的進程,並返回一個Process子類的實例(注意:Runtime.getRuntime().exec(command)返指寬回的是一個Process類的實例)該實例可用於控制進程或取得進程的相關信息。

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

  3. 用戶需要用這些stream來向子進程輸入數據或獲取子進程的輸出,下面的代碼可以取到linux命令的執行結果:

    try{

    String[]cmd=newString[]{」鎮純/bin/sh」,「-c」,」ls「};

    Processps=Runtime.getRuntime().exec(cmd);

    BufferedReaderbr=newBufferedReader(newInputStreamReader(ps.getInputStream()));

    StringBuffersb=newStringBuffer();

    Stringline;

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

    sb.append(line).append(」 」);

    }

    Stringresult=sb.toString();

    System.out.println(result);

    }catch(Exceptione){

    e.printStackTrace();

    }

閱讀全文

與java調用linux系統命令相關的資料

熱點內容
華為手機怎麼設置移動數據app 瀏覽:955
空調壓縮機哪的廠家多 瀏覽:388
手指速演算法24加7怎麼算 瀏覽:137
如何用python寫vlookup函數 瀏覽:796
社保加密狗廠商 瀏覽:214
php編譯運行說法 瀏覽:955
程序員說喂 瀏覽:252
抖音直播雲伺服器 瀏覽:627
一加7pro文件夾data 瀏覽:424
程序員淋雨 瀏覽:959
python輸出數字序列中的空格 瀏覽:78
怎麼將pdf文件大小 瀏覽:734
氧原子相對分子量演算法 瀏覽:988
加密機為什麼是安全的 瀏覽:451
單片機拼音輸入法 瀏覽:803
蘋果筆記本t2加密晶元怎麼打開 瀏覽:797
安卓如何把手機投屏至電視 瀏覽:753
方舟編譯器現在可提速哪些軟體 瀏覽:61
微信加密為什麼是黑屏 瀏覽:473
android去電狀態 瀏覽:614