`
junge8618
  • 浏览: 121038 次
  • 性别: Icon_minigender_1
  • 来自: 邵阳
社区版块
存档分类
最新评论

ShellCommand_Java代码中执行shell脚本_Process的输入、输出、错误流都需要关闭(2)

阅读更多
public static boolean execute(String shellFile)
    {
        //脚本文件为NULL或空值
        if (null == shellFile || shellFile.equals(""))
        {
            logger.warn("ShellCommand shellFile is null.");
            return false;
        }
        
        if (logger.isDebugEnabled())
        {
            logger.debug("bash " + shellFile);
        }
        
        try
        {
            Process process = Runtime.getRuntime().exec("bash " + shellFile);
            int iretCode = process.waitFor();
            
            try
            {
                if (iretCode != 0)
                {
                    BufferedReader br = new BufferedReader(
                            new InputStreamReader(process.getErrorStream()));
                    StringBuilder errorDesc = new StringBuilder();
                    
                    for (String str = br.readLine(); str != null; str = br
                            .readLine())
                    {
                        errorDesc.append(str);
                    }
                    
                    //zkf35483 新增关闭流操作
                    br.close();
                    logger.error("execute shell " + shellFile + " failed: "
                            + errorDesc);
                }
                else
                {
                    return true;
                }
            }
            catch (IOException e)
            {
                logger.error("IOException:", e);
            }
            finally
            {
                process.getErrorStream().close();
                process.getInputStream().close();
                process.getOutputStream().close();
            }
            
        }
        catch (Exception e)
        {
            logger.error("Execute " + shellFile + " exception:", e);
        }
        
        return false;
    }
分享到:
评论

相关推荐

    利用app_process实现免root调用shell_Java_下载.zip

    要利用`app_process`执行shell命令,我们需要创建一个自定义的Java类,并在该类中调用`Runtime.getRuntime().exec()`方法来执行shell命令。以下是一个简单的示例: ```java public class ShellExecutor { public ...

    Java代码中调用shell脚本和python脚本并获得输出结果(分为小数据量和大数据量).docx

    在实际开发过程中,我们经常需要在Java程序中调用Shell脚本或Python脚本来执行一些特定的任务,比如系统管理任务、数据分析等。Java通过`java.lang.Runtime`类提供了非常方便的方式来启动新的进程,并与之通信。然而...

    使用runtime实现linux命令行或shell脚本多次调用

    在Java编程中,有时我们需要与操作系统进行交互,执行一些系统级别的任务,比如运行Linux命令或shell脚本。`Runtime`类是Java标准库提供的一种机制,允许我们在程序中执行操作系统命令。本文将深入探讨如何使用`...

    java控制台输入cmd命令, ssh远程linux shell命令, 并打印命令输出到控制台

    在Java编程中,有时我们需要与操作系统进行交互,执行系统级别的命令,例如在控制台执行CMD命令或者通过SSH连接远程Linux服务器执行shell命令。这在自动化脚本、系统管理或者远程监控等场景中非常常见。本篇文章将...

    java 执行cmd命令及mongodb脚本

    Java执行CMD命令及MongoDB脚本是开发过程中常见的任务,特别是在集成系统或者自动化运维场景下。下面将详细讲解这两个主题。 一、Java执行CMD命令 在Java中,我们可以使用Runtime类或ProcessBuilder类来执行操作...

    java调用Shell脚本.doc

    在实际开发过程中,经常会遇到需要结合Java程序与Shell脚本进行操作的情况。通过Java调用Shell脚本不仅可以实现复杂的功能,还可以提高程序的灵活性和扩展性。本文将详细介绍如何在Java中调用Shell脚本,并给出一个...

    Java 调用 Shell 命令

    2. **调用Shell脚本**:通过Java的`Runtime.getRuntime().exec()`方法来执行Shell命令或脚本。 下面是一个具体的Java类实现示例,用于调用Shell脚本并记录执行日志: ```java import java.io.*; import java.text....

    java调用shell

    一旦Shell脚本开始执行,我们可以通过`Process`对象的输入流读取脚本的输出: ```java InputStreamReader ir = new InputStreamReader(process.getInputStream()); LineNumberReader input = new LineNumberReader...

    java调用shell向DataX传参,带where条件,特殊字符

    Java调用Shell脚本执行DataX任务是一种常见的数据迁移或同步操作。DataX是阿里巴巴开源的数据同步工具,它支持多种数据库之间的数据迁移。在实际应用中,我们可能需要根据特定的业务逻辑,如where条件,来定制数据...

    Java 执行本地脚本携带多参数

    在Java编程中,有时我们需要执行本地的脚本文件,并且可能需要传递多个参数给这些脚本。这在处理自动化任务、系统集成或者调用外部工具时非常常见。本篇文章将详细探讨如何在Java中实现这一功能,同时也会涉及到源码...

    android 给app授权 执行shell命令

    在Android平台上,有时候开发者需要超越普通应用程序的权限范围,例如执行系统级别的操作,这就涉及到给APP授权和执行Shell命令。Android系统默认是以安全为优先,不允许应用无限制地执行shell命令,但通过获取Root...

    Java调用sqlplus执行定制的sql脚本

    - 在Java中,你可以使用`Runtime.getRuntime().exec()`或`ProcessBuilder`来执行shell命令。例如,创建一个SQL脚本文件(如`script.sql`),然后通过以下代码调用SQL*Plus执行该脚本: ```java String command =...

    java_dos_shell_bat

    此外,Java 1.5以后引入的`java.lang.Process`接口提供了更多与子进程交互的方法,如获取进程ID、关闭输入/输出流、等待进程结束等。这些功能使得Java程序可以更好地控制和监控外部命令的执行。 总结来说,Java通过...

    java代码中调用linux/unix命令

    别忘了关闭输入输出流,防止内存泄漏。 5. **异常处理和错误检查** 通过`Process.exitValue()`检查命令执行是否成功。正常退出时,返回值为0;非零表示有错误。同时,注意捕获并处理可能出现的异常。 6. **安全...

    java调用shell向DataX传递参数,where条件,包含特殊字符

    总之,Java调用shell脚本向DataX传递参数,尤其是在where条件中包含特殊字符时,需要关注字符串转义、shell命令构建以及安全问题。同时,合理设计和使用配置文件能有效提高代码的灵活性和可维护性。

    java运行shell脚本方法示例

    在Java编程中,有时我们需要在程序中执行操作系统级别的任务,比如运行Linux的Shell脚本。这时,我们可以利用Java内置的`Runtime`类的`execute`方法来实现这一目标。本文将详细讲解如何在Java中使用`Runtime.execute...

    Java代码执行shell命令的实现

    Java代码执行shell命令的实现是指在Java程序中调用操作系统的shell命令,实现与操作系统交互的功能。下面将详细介绍Java代码执行shell命令的实现方法。 环境准备 在执行shell命令之前,需要获取JVM底层操作系统的...

    java执行linux的SH文件

    - 在博文链接中(由于实际链接无法访问,这里只能做一般性描述),可能详细介绍了如何在Java中编写代码来执行SH脚本,包括如何处理输出流、错误流,以及如何正确传递参数。 6. **工具应用** - 这种技术常用于自动...

    java 操作脚本启动服务

    2. **处理标准输入/输出和错误流**:执行外部命令时,需要注意处理进程的标准输出、标准错误和标准输入。不正确处理可能导致程序阻塞或数据丢失。 3. **跨平台命令执行**:在Java中实现跨平台命令执行,需要考虑...

Global site tag (gtag.js) - Google Analytics