Java调用shell脚本的一些问题
代码:
public class JavaAndShell { public static void main(String[] args) { InputStreamReader stdISR = null; InputStreamReader errISR = null; Process process = null; String command= "bash /home/hadoop/test.sh"; //程序路径 try { process = Runtime.getRuntime().exec(command); try { int exitValue = process.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); } String line = null; stdISR = new InputStreamReader(process.getInputStream()); BufferedReader stdBR = new BufferedReader(stdISR); while ((line = stdBR.readLine()) != null) { System.out.println("STD line:" + line); } errISR = new InputStreamReader(process.getErrorStream()); BufferedReader errBR = new BufferedReader(errISR); while ((line = errBR.readLine()) != null) { System.out.println("ERR line:" + line); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (stdISR != null) { stdISR.close(); } if (errISR != null) { errISR.close(); } if (process != null) { process.destroy(); } } catch (IOException e) { System.out.println("正式执行命令:" + command + "有IO异常"); } } } }
在IDEA中打成jar包,然后上传到Linux中
注意:上传后需要修改文件权限:chmod a+x xxx.jar
运行jar包,命令 java -cp xxx.jar 包名.类名