ZKX's LAB

linux 脚本调用命令 linux里,脚本调用的shell命令,输出格式和在shell里调用命令不一样,怎样输出漂亮的格式??

2021-04-10知识5

如何在java程序中调用linux命令或者shell脚本java程序是提供了这个一方法,Process pro=Runtime.getRuntime().exec(cmds);但是一般来说,尽量去用一些其他脚本(lua,shell,python)去执行一系列linux命令比较灵活,而且耗费资源少。但是Runtime.getRuntime().exec()这种调用方式在java虚拟机中是十分消耗资源的,即使命令可以很快的执行完毕,频繁的调用时创建进程消耗十分可观。java虚拟机执行这个命令的过程是,首先克隆一条和当前虚拟机拥有一样环境变量的进程,再用这个新的进程执行外部命令,最后退出这个进程。频繁的创建对CPU和内存的消耗很大。

如何在java程序中调用linux命令或者shell脚本 Java提供了Runtime类,用于调用Shell脚本,这个类提供了好几个不同参数的exec()方法,看其源码,最后其实都是转化为一个方法,exec(String[]cmdarray,String[]envp,File dir)cmdarray:包含要调用的脚本及脚本的参数envp:环境变量,name=value形式dir:脚本工作目录基本代码如下:String[]command=new String[]{\"/home/CommandTest/test.sh\",\"para1\",\"para2\"};process=Runtime.getRuntime().exec(command,new String[]{\"LOG_V=1\"},new File(\"/home/CommandTest\"));脚本标准输出流BufferedReader inputStream=new BufferedReadernew InputStreamReader(process.getInputStream(),\"UTF-8\"));脚本错误输出流BufferedReader errorStream=new BufferedReadernew InputStreamReader(process.getErrorStream(),\"UTF-8\"));启动线程处理输出流stdoutTread.start();erroutThread.start();处理返回值及超时的情况while(finish-start){int rtnCode=process.waitFor();}

如何在java程序中调用linux命令或者shell脚本 1234567891011121314151617181920212223242526272829Testpublic void test6(){BufferedReader br=null;Runtime rt=Runtime.getRuntime();String cmdstr=\"cmd.exe/c dir;try {Process process=rt.exec(cmdstr);输入执行结果br=new BufferedReader(new InputStreamReader(process.getInputStream()));String line=null;while((line=br.readLine())。null){System.out.println(line);}if(process。null){process.destroy();process=null;}} catch(IOException e){e.printStackTrace();}finally{if(br。null){try {br.close();} catch(Exception e){e.printStackTrace();}}}}

随机阅读

qrcode
访问手机版