使用java调用linux脚本

使用java调用linux脚本在 java 程序中如何调用 linux 的命令 如何调用 shell 脚本呢 java 中 当调用外部程序时 可以使用 Processproc Runtime getRuntime exec Stringcomman 这里不得不提到 java 的 process 类了 process 这个类是一个抽象类 封装了一个进程 你在调用 linux 的命令或者 shell 脚本就是为了执行一个在 li

在java程序中如何调用linux的命令?如何调用shell脚本呢?

java中,当调用外部程序时,可以使用,

Process proc = Runtime.getRuntime().exec(String command);

这里不得不提到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脚本

例如,Process proc = Runtime.getRuntime().exec(“/bin/sh test.sh stop”);

当然,Runtime.getRuntime().exec提供了很多的重载以方便使用,

  • public Process exec(String command);
  • public Process exec(String [] cmdArray);
  • public Process exec(String command, String [] envp);
  • public Process exec(String [] cmdArray, String [] envp);

如果不设定Working Directory,被调用shell进程的工作目录就是调用进程的工作目录。

设定方法是:使用以下方法调用Runtime.getRuntime().exec(command, envp, dir), dir就是工作目录

 

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

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

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

    Process process =null; 

    String var=””;               //参数

 

注意:

1

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

2

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231138.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • latex 公式太长 自动换行「建议收藏」

    latex 公式太长 自动换行「建议收藏」\begin{equation}\begin{split}x=&a+b+c+\\&d+e+f+g\end{split}\end{equation}[latex]长公式换行_solidsanke54的专栏-CSDN博客_latex公式分行

    2022年5月11日
    127
  • DotNetTextBox控件添加外挂插件功能的图文教程。

    DotNetTextBox控件添加外挂插件功能的图文教程。在使用DotNetTextBox在线编辑器的时候,你可能觉得控件内置的功能不能满足你的编辑需要,这时DotNetTextBox控件强大的外挂插件功能就发挥作用了,使用外挂插件功能,你就能自行DIY任何自己想实现的功能,而且使用也非常简单,下面我们就为大家演示了为DotNetTextBox增加一个插入网页按钮(button)外挂插件的步骤:第一步:首先用VS2005打开system_dn…

    2022年10月19日
    2
  • windows 下openssl安装配置

    windows 下openssl安装配置一 下载 1 官网下载 source index html 源码版 2 网盘下载 windows 版 链接 https pan baidu com s 1JrM Fg8uHt0O0HEN w7coA 提取码 77773 码客下载 OpenSSL 官方下载 码客 windows 版 二 运行 exe 文件 直接咔咔就是下一步 我是安装到了 D 盘 中间安装的位置自定义 三 配置 1 复制 openssl 中 bin 文件路径 2 右键电脑 amp g

    2025年11月25日
    3
  • Django设置超时时间_Django orm

    Django设置超时时间_Django orm前言我们都知道时区,标准时区是UTC时区,django默认使用的就是UTC时区,所以我们存储在数据库中的时间是UTC的时间,但是当我们做的网站只面向国内用户,或者只是提供内部平台使用,我们希望存储在

    2022年7月30日
    13
  • hackbar工具安装使用教程

    hackbar工具安装使用教程HackBar工具介绍HackBar是一个浏览器上的一个插件,包含一些黑客常用的工具,比如SQLinjection,XSS,加密等!免费版下载百度网盘:https://pan.baidu.com/s/1WBT6iqx9ZRSbCRbGWUfvvA提取码:1234免费版安装:按F12打开hackbar界面…

    2022年6月14日
    153
  • Python基础知识归纳「建议收藏」

    Python基础知识归纳「建议收藏」Python基础教程Python基础教程Python简介Python环境搭建Python中文编码Python基础语法Python变量类型Python运算符Python条件语句Python循环语句PythonWhile循环语句Pythonfor循环语句Python循环嵌套Pythonbreak语句Python…

    2022年10月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号