ZKX's LAB

如何在java程序中调用linux命令或者shell脚本 shell脚本 调用命令

2020-10-10知识6

如何在java程序中调用linux命令或者shell脚本 java程序是提供了这个一方法,Process pro=Runtime.getRuntime().exec(cmds);但是一般来说,尽量去用一些其他脚本(lua,shell,python)去执行一系列linux命令比较灵活,而且耗费资源少。但是Runtime.getRuntime().exec()这种调用方式在java虚拟机中是十分消耗资源的,即使命令可以很快的执行完毕,频繁的调用时创建进程消耗十分可观。java虚拟机执行这个命令的过程是,首先克隆一条和当前虚拟机拥有一样环境变量的进程,再用这个新的进程执行外部命令,最后退出这个进程。频繁的创建对CPU和内存的消耗很大。下面是一个调用linux命令的例子:public class Test {public static void main(String[]args)throws Exception{String[]cmds={\"/bin/sh\",\"-c\",\"ps-ef|grep java\"};Process pro=Runtime.getRuntime().exec(cmds);pro.waitFor();阻塞,直到上述命令执行完InputStream in=pro.getInputStream();BufferedReader read=new BufferedReader(new InputStreamReader(in));String line=null;while((line=read.readLine())。null){System.out.println(line);}}}注:参数中逗/bin/sh逗 逗-c逗 是可以用shell执行指定的命令的意思这里/bin/sh-c ps-ef|grep java,。

如何在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脚本例如,。

如何在java程序中调用linux命令或者shell脚本 Process process=null;try {process=Runtime.getRuntime().exec(\"你要执行的linux命令\");} catch(IOException e){System.out.println(\"执行linux命令异常\");}

如何在java程序中调用linux命令或者shell脚本 做到这,主要依赖2个类:Process和Runtime。首先看一下Process类:ProcessBuilder.start()和 Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例,该实例可用来控制进程并获得相关信息。Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法。创建进程的方法可能无法针对某些本机平台上的特定进程很好地工作,比如,本机窗口进程,守护进程,Microsoft Windows上的 Win16/DOS 进程,或者 shell 脚本。创建的子进程没有自己的终端或控制台。它的所有标准 io(即 stdin、stdout 和 stderr)操作都将通过三个流(getOutputStream()、getInputStream()和 getErrorStream())重定向到父进程。父进程使用这些流来提供到子进程的输入和获得从子进程的输出。因为有些本机平台仅针对标准输入和输出流提供有限的缓冲区大小,如果读写子进程的输出流或输入流迅速出现失败,则可能导致子进程阻塞,甚至产生死锁。当没有 Process 对象的更多引用时,不是删掉子进程,而是继续异步执行子进程。对于带有 Process 对象的 Java 进程,没有必要异步或并发执行由 Process 对象表示的进程。特别需要注意的。

如何在shell脚本中调用另一个shell的结果,在hell脚本中调用另一个hell脚本的结果,可以分为获取内容结果和执行结果两种情况,具体可以参考如下内容。

如何通过java远程调用linux命令或shell脚本? 这个非常简单,基本原理先通过ssh连接远程Linux主机,然后执行shell命令,获取返回结果,下面我简单介绍一下实现过程,主要内容如下:1.首先,需要在maven中导入程序所依赖的Jar包,这个直接在pom.xml文件中输入就行,如下:2.接着就可以用Java编程来实现远程连接Linux主机并执行shell命令或脚本了,主要步骤及截图如下:首先,导入程序所依赖的包,初始化成员变量,这里定义了一个ExecuteShell类,创建对象时,需要输入IP地址、用户名和密码这3个参数,用于后面ssh连接远程Linux主机,代码如下,非常简单:接着就是远程连接Linux主机了,测试代码如下,很好理解,创建一个Connection连接,如果连接成功,则返回true,失败则返回false:连接成功后,我们就可以直接执行Linux shell脚本或命令了,测试代码如下,非常简单,打开一个Session会话,然后执行shell命令或脚本,返回执行结果:processStdout函数代码如下,主要是取得shell命令和脚本返回的结果,代码如下:最后,在main函数中创建ExecuteShell类对象,调用execute函数执行shell命令或脚本就行,如下:点击运行程序,截图如下,已经成功执行shell,并取得返回的结果:至此,我们就完成了利用Java来远程调用。

如何在java程序中调用linux命令或者shell脚本 public static String execShell(String shellString){ System.out.println(\"将要执行的shell语句是:\"+shellString);String isOK=\"ok;try{ Process process=Runtime。.

随机阅读

qrcode
访问手机版