【问题标题】:JAVA - .sh file executing from terminal but not via JAVA codeJAVA - 从终端执行但不通过 JAVA 代码执行的 .sh 文件
【发布时间】:2018-02-14 07:07:54
【问题描述】:

我有一个 JAVA 代码来创建和执行 .sh 文件。问题是 - .sh 文件正在创建但没有通过 JAVA 代码执行。当从终端或 cronjob 手动运行时,它会被执行。最大的问题是——相同的代码在所有 DEV 服务器上都可以正常工作,但在 CentOS 6.8 的客户端 PROD 环境中却不行。它在 CentOS 6.5 的客户端 UAT 环境中也能正常工作。

代码在应用服务器上创建可执行的 sh 文件并执行它。 sh 文件包含命令 sqlldr 和 sqlplus 通过批量上传机制上传数据。成功执行后,将创建一个带有执行输出的日志文件。任何类似的错误都会写入日志文件。不执行 sh 文件时,也不会创建日志文件。从终端手动执行时,会执行 sh 文件并创建日志文件。下面是sh文件的内容

sqlldr user/pass@db CONTROL=CTL_1000004453.ctl silent=all
echo -e "UPDATE QT_BATCH_UPLOAD SET UPLOAD_STATUS = 20 WHERE UPLOAD_ID = 1000004453;
commit;
exit;
" > SET_STATUS_1000004453.SQL
sqlplus user/pass@db @SET_STATUS_1000004453.SQL

在应用程序和服务器日志中没有出现错误。应用程序正在 Weblogic 服务器上运行。我已经检查并消除了所有与权限相关的问题。

如果有人遇到过此类不可复制的问题,请提供帮助。

下面是代码。

        try
        {

          Runtime rt = Runtime.getRuntime();
          Process pr = rt.exec(new String[] { "/bin/bash", "-c", "cd " + path + " ;chmod a+x " + exeFile + "; sh " + exeFile + ";" });

          BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream()));

          FileOutputStream file3 = new FileOutputStream(path + "CONSOLE_" + uploadID + ".LOG");
          String line; while ((line = br.readLine()) != null) { String line;
            System.out.println(line);
            file3.write((line + System.getProperty("line.separator")).getBytes());
            file3.flush();
          }
          file3.close();

        }

【问题讨论】:

  • take the tour 了解该网站的运作方式以及此处的主题有哪些问题,并edit 相应地提出您的问题。另见:How to create a Minimal, Complete, and Verifiable example
  • 另外,当你让它工作时,不要这样做。您在这里遇到了相当于 SQL 注入漏洞的 bash(例如,如果 exeFile 是 /; rm -rf /
  • @AndyTurner 我会调查一下,但请你先帮我解决这个问题?

标签: java shell sh


【解决方案1】:

问题已解决。无需更改代码。实际上应用服务器(Weblogic)是通过控制台运行的。我做了一些研发,并要求客户通过腻子/终端运行它,发布后,代码运行良好。

当 weblogic 通过控制台运行时,我仍然会寻找解决方案来获得相同的工作。

【讨论】:

    猜你喜欢
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多