zoukankan      html  css  js  c++  java
  • 如何在java程序中调用linux命令或者shell脚本

    转自:http://blog.sina.com.cn/s/blog_6433391301019bpn.html

    在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脚本

    例如,我需要在linux下实行linux命令:sh test.sh,下面就是执行test.sh命令的方法:

    这个var参数就是日期这个201102包的名字。

        String shpath="/test/test.sh";   //程序路径

        Process process =null;

        String command1 = “chmod 777 ” + shpath;
        process = Runtime.getRuntime().exec(command1);
        process.waitFor();




        String var="201102";               //参数

        String command2 = “/bin/sh ” + shpath + ” ” + var; 
        Runtime.getRuntime().exec(command2).waitFor();

    注意:

    1

    我为什么要使用 chmod 777命令呢?在有的机器上面,可能没有设置权限问题。这是你在linux下面执行shell脚本需要注意的问题。没有的话,就需要添加权限,就用chmod 777,否则在执行到Runtime.getRuntime().exec的时侯会出现Permission denied错误。

    2

    waitFor()这个也是必不可缺的,如果你需要执行多行命令的话,把waitFor()这个加上。

  • 相关阅读:
    DotNet中的迭代模式和组合模式
    能以可视化方式编辑滤镜效果的Image控件
    自定义ExtenderControl实现服务器控件可拖放
    股票交易费及利润计算器
    用ajax library的客户端脚本实现无刷新分页
    实现html转Xml
    oracle10g主机身份证明错误的解决办法
    创建ASP.NET AJAX客户端组件实现验证控件的toolTip式错误提示
    可分页的Repeater控件
    数据结构趣题——约瑟夫环
  • 原文地址:https://www.cnblogs.com/x_wukong/p/5148152.html
Copyright © 2011-2022 走看看