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

 我来答
流星一道虹
2017-01-17 · TA获得超过169个赞
知道小有建树答主
回答量:81
采纳率:0%
帮助的人:77.9万
展开全部

  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,会执行ps linux命令

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式