java執行shell命令
package com.pms.util;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* 執行 linux命令
*
* @author mars
*
*/
public class ExecuteLinux {
// log4j例項名
private static final Log log = LogFactory.getLog(ExecuteLinux.class
.getCanonicalName());
/**
* 執行linux命令,並輸出結果
*
* @param cmd
* @throws RuntimeException
* @throws IOException
*/
public static void execute(String[] cmd) throws Exception {
InputStream errorStream = null;
InputStream inputStream = null ;
Process ps = null;
try {
// String[] cmd = new String[] { "/bin/sh", "-c", "ls" };
ps = Runtime.getRuntime().exec(cmd);
log.debug("開始執行本地執行緒");
errorStream = ps.getErrorStream(); // 正確結果的流
inputStream = ps.getInputStream(); // 錯誤結果的流
printError(errorStream);
printInfo(inputStream);
} catch (Exception e) {
log.error("execute linux command error...", e);
throw new Exception("execute linux command error...");
}finally{
if(errorStream != null){
errorStream.close();
}
if(inputStream != null){
inputStream.close();
}
ps.destroy();
}
}
/**
* 列印 正確資訊
* @param errorStream
* @throws IOException
*/
private static void printInfo(InputStream inputStream) throws IOException{
StringBuffer sb = new StringBuffer();
int line=0;
while ((line = inputStream.read(new byte[1024])) != -1) {
sb.append((char)line).append("\n");
}
String result = sb.toString();
System.out.println("#####正確資訊######:"+result);
log.debug("#####正確資訊LOG######:"+result);
}
/**
* 列印錯誤資訊
* @param errorStream
* @throws IOException
*/
private static void printError(InputStream errorStream) throws IOException{
StringBuffer sb = new StringBuffer();
int line=0;
while ((line = errorStream.read(new byte[1024])) != -1) {
sb.append((char)line).append("\n");
}
String result = sb.toString();
System.out.println("#####錯誤資訊######:"+result);
log.debug("#####錯誤資訊LOG######:"+result);
}
/**
* 獲得 wgrib2 切割的linux命令,將grib2切割為二進位制 bin 檔案
* @param pathName 檔案路徑名
* @param fileName 檔名
* @param savePath 要儲存到的路徑名
* @param lists 條件集合(必不為空,因為從資料庫獲得,而存入資料庫時,前臺有校驗不為空)
* @return
*/
public static String[] getLinuxCommand(String pathName, String fileName, String savePath, List<String> lists){
//"/bin/sh", "-c",
String[] cmd = new String[3];
cmd[0] = "/bin/sh";
cmd[1] = "-c";
StringBuffer condition_bf = new StringBuffer();
for (String str : lists) {
condition_bf.append(str+" mb|");
}
// 將最後一個 '|' 符號截掉
String condition_str = condition_bf.toString().substring(0, condition_bf.toString().length()-1);
//wgrib2 -s Z_NAFP_C_BABJ_20120508000000_P_CNPC-T639-GMFS-HNEHE-00300.grib2 | grep -E "(\bHGT:20\b)|(\bHGT:30\b)" | wgrib2 -i Z_NAFP_C_BABJ_20120508000000_P_CNPC-T639-GMFS-HNEHE-00300.grib2 -no_header -bin data5.bin
StringBuffer bf = new StringBuffer();
bf.append("wgrib2 -s ");
bf.append(pathName+"/"+fileName);
bf.append(" | grep -E ");
bf.append("\""+condition_str+"\"");
bf.append(" | wgrib2 -i ");
bf.append(pathName+"/"+fileName);
bf.append(" -no_header -bin ");
String newName = fileName.substring(0, fileName.indexOf(".")); // 去掉 .grib2 的檔名
bf.append(savePath+"/"+newName+".bin");
cmd[2] = bf.toString();
return cmd;
}
public static void main(String[] args) {
// String str = "new.grib2";
// System.out.println(str.substring(0, str.indexOf(".")));
//
// String pathName = "/home/ftp/cwfs";
// String fileName = "new_003.grib2";
// String savePath ="/home/ftp/cwfs";
//
// List<String> lists = new ArrayList<String>();
// lists.add("HET:20");
// String[] command = getLinuxCommand(pathName, fileName, savePath, lists);
//
// System.out.println(command[2]);
// File file = new File("E:temp");
// System.out.println(file.getParent());
// File[] listFiles = file.listFiles();
// if(listFiles != null && listFiles.length > 0){
// for (File f : listFiles) {
// f.delete();
// }
// }
// File[] list = file.listFiles();
// for (File s : list) {
// System.out.println(s.getPath());
// }
}
}
相關推薦
java執行shell命令中有空格的處理方法
java執行shell命令中有空格的處理?Runtime.getRuntime().exec(cmdstring);如果此時cmdstring中的參數(例如cp文件時文件名)含有特殊符號空格,此時就會出現錯誤,因為源碼會按照一些特殊字符(" \t\n\r\f",註意到其中含有空格)去切分cmdstring
Java執行shell命令或cmd命令
執行命令加字首cmd命令 : cmd /cshell命令: shell -cpublicstaticvoid exeCmd(String commandStr) throws Exception { BufferedReader br = null;
java執行shell命令
package com.pms.util;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util
Android Java執行Shell命令
2、使用 (2) 呼叫上面介紹的execCommand函式, 注意有些命令可能執行時間較長,所以最好線上程中執行execCommand 3、使用場景 以目前自己的幾個場景舉下例子 (1) 靜默安裝和解除安裝 這個很多朋友已經用過了Android root許可權靜默安裝或解除安裝應用,
java 執行shell命令
import java.io.BufferedReader; import java.io.InputStreamReader; public class shell { public static String executeCommand(String c
java 執行shell命令及日誌收集避坑指南
有時候我們需要呼叫系統命令執行一些東西,可能是為了方便,也可能是沒有辦法必須要呼叫。涉及執行系統命令的東西,則就不能做跨平臺了,這和java語言的初衷是相背的。 廢話不多說,java如何執行shell命令?自然是呼叫java語言類庫提供的介面API了。 1. java執行shell的ap
java程式碼執行shell命令
java程式碼執行shell命令,需要通過google出品的工具類ssxcute.jar,下載地址: https://download.csdn.net/download/qq_15076569/10797217 java程式碼操作shell程式碼: import net.neorem
java 通過 ssh 執行 shell 命令
public abstract class Shell implements AutoCloseable{ abstract boolean executeCommands(String... commands); abstract Strin
通過java程式碼執行shell命令的小案列
一 需求描述: 通常我們操作linux伺服器都是通過遠端連線工具,比如:SecureCRT,Xmanager等工具,在其上輸入命令來完成一些工作,但是在實際工作中,有些時候需要我們通過java程式碼遠端連線到linux伺服器執行一些shell命令,包括叢集的狀
java呼叫shell命令並獲取執行結果
原文地址:http://blog.csdn.net/arkblue/article/details/7897396 使用到Process和Runtime兩個類,返回值通過Process類的getInputStream()方法獲取 package ark;
java 執行linux命令或shell指令碼方法
一.容易出錯的地方之一,執行ps等命令要注意到jvm呼叫的linux命令也是一個程序 背景:第1,2,3,4行程式碼都可以完成java 執行shell指令碼的任務,第2,3,4行程式碼的陣列中第三個引數可以是指令碼名,也可以是cd / ls / chown 這種命令。 問題
Android java程式碼中如何執行shell命令
public void execCommand(String command) throws IOException { Runtime runtime = Runtime.getRuntime(); Process proc = runtime.exec(command);
java遠端執行shell命令
1、連線伺服器,執行shell的方法package com.shishike.susie.utility; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.P
Java執行linux命令及shell指令碼
import java.io.*; import java.util.*; import org.apache.log4j
java執行cmd命令
spa dbca script dmgr share pub pdm meeting 碎片 從網上找的java執行cmd命令的文章,摘抄一段。 java的Runtime.getRuntime().exec(commandStr)可以調用執行cmd指令。cmd /c dir
Centos 執行shell命令返回127錯誤
建數據庫 mysq data 存在 思路 功能 自動創建 運行 用戶 shell腳本功能:連接mysql,自動創建數據庫,腳本如下 mysql -h$MYSQL_IP -u$MYSQL_USER -p$MYSQL_PASSWORD --default-character-s
php 執行shell命令 打印錯誤信息
信息 資源 null function $cmd = "rm 1.txt";//刪除一個不存在的文件,查看報錯信息 $res = doShell($cmd); var_dump($res); //該函數沒有限制條件,可以直接放在代碼中使用 function doShell($cmd,$cwd=
python之執行shell命令
python[[email protected]/* */ ~]# python Python 2.7.5 (default, Sep 15 2016, 22:37:39) [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2 Type "help",
執行shell命令的函數——system()、popen()
system、popen1、FILE* popen(const char* cmd,const char* type); int pclose(FILE* stream); popen()函數fork()一個子進程,創建管道用於父子進程間通信,父進程要麽從管道讀,要麽往管道寫,執行一個shell以
java執行cmd命令並獲取輸出結果
cat result ring stream jarsigner blog gin org common 1.java執行cmd命令並獲取輸出結果 1 import java.io.BufferedReader; 2 import java.io.InputStrea