精华内容
下载资源
问答
  • java执行linux脚本 并返回其执行结果

    千次阅读 2019-05-21 14:40:26
    代码如下:复制粘贴 即可 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList;... * 执行脚本的工...

    代码如下:复制粘贴 即可

    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 执行脚本的工具类
     */
    public class ExecutionScriptUtils {
    
        public static List<String> executeLinuxCmd(String cmd) throws IOException {
            System.out.println("got cmd job : " + cmd);
            Runtime run = Runtime.getRuntime();
    //            Process process = run.exec(cmd);
                Process process = run.exec(new String[] {"/bin/sh", "-c", cmd});
                InputStream in = process.getInputStream();
                BufferedReader bs = new BufferedReader(new InputStreamReader(in));
                List<String> list = new ArrayList<String>();
                String result = null;
                while ((result = bs.readLine()) != null) {
                    System.out.println("job result [" + result + "]");
                    list.add(result);
                }
                in.close();
                process.destroy();
                return list;
        }
    
    }
    
    
    展开全文
  • 1. 我用Java编写代码,使用Runtime,执行Linux命令。 1. 比如执行:“hive -f 'hivetest.sh'”,hivetest.sh是Linux上面的一个脚本(关于hive的建表、load数据等等。) 1. 我的问题是:怎么获取这个脚本执行...
  • Java执行linux命令 获取执行结果

    千次阅读 2014-06-04 11:29:53
    //java使用Runtime.exec执行linux命令 获取执行结果 //java -cp /home/ymiao/linux_java_project/classes test.ExecTest import java.io.BufferedInputStream; import java.io.IOException; import java.io
    package test;
    
    //java使用Runtime.exec执行linux命令 获取执行结果
    //java -cp /home/ymiao/linux_java_project/classes test.ExecTest
    import java.io.BufferedInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    public class ExecTest
    {
        public static void main(String[] args)
        {
            System.out.println("test!");
    
            String[] cmd = { "sh", "-c", "ls > FILE" };
            try
            {
                Process ps = Runtime.getRuntime().exec(cmd);
                System.out.print(loadStream(ps.getInputStream()));
                System.err.print(loadStream(ps.getErrorStream()));
            }
            catch (IOException ioe)
            {
                ioe.printStackTrace();
                System.out.println("IOException");
            }
        }
    
        // read an input-stream into a String
        static String loadStream(InputStream in) throws IOException
        {
            int ptr = 0;
            in = new BufferedInputStream(in);
            StringBuffer buffer = new StringBuffer();
            while ((ptr = in.read()) != -1)
            {
                buffer.append((char) ptr);
            }
            return buffer.toString();
    
        }
    
    }
    

    展开全文
  • java/linux执行Python脚本工作原因,需要通过Python脚本进行接口访问获取接口数据。分析网上java执行Python脚本无外乎三种方法:1、直接执行Python脚本代码引用 org.python包PythonInterpreter interpreter = new ...

    java/linux执行Python脚本

    工作原因,需要通过Python脚本进行接口访问获取接口数据。

    分析

    网上java执行Python脚本无外乎三种方法:

    1、直接执行Python脚本代码

    引用 org.python包

    PythonInterpreter interpreter = new PythonInterpreter();

    interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); ");

    ///执行python脚本

    2、执行python .py文件

    PythonInterpreter interpreter = new PythonInterpreter();

    InputStream filepy = new FileInputStream("D:\\demo.py");

    interpreter.execfile(filepy); ///执行python py文件

    filepy.close();

    3、使用Runtime.getRuntime()执行脚本文件

    这种方式和.net下面调用cmd执行命令的方式类似。如果执行的python脚本有引用第三方包的,建议使用此种方式。使用上面两种方式会报错Java ImportError: No module named arcpy。

    Process proc = Runtime.getRuntime().exec("python D:\\demo.py");

    proc.waitFor();

    工程

    本次项目使用了Runtime.getRuntime().exec()方法,解决Python的执行问题,原因如下:

    1、此方法使用的系统命令执行,window下使用cmd命令,linux环境下使用Python命令。没有使用第三方依赖包,功能齐全、方便管理。

    2、系统环境下对Python环境的支持最大,如引入的第三方包python、jpython等,可能对类库的支持不是很好,在引入基础类库的时候就得不到很好的支持,引起异常报错。

    代码如下:

    public List python(String pythonPath) {

    List res = new ArrayList<>();

    String url=PythonRunner.class.getClassLoader().getResource("").getPath()+"cfg/spring/cs.py";

    logger.info("脚本地址:"+url);

    File file = new File(url);

    if (!file.exists()){

    res.add("python脚本不存在!");

    return res;

    }

    String [] cmd={"python",url};

    try {

    logger.info("开始执行脚本...\n");

    Process process = Runtime.getRuntime().exec(cmd);

    if (process == null) {

    return null;

    }

    Scanner scanner = new Scanner(process.getInputStream());

    while (scanner.hasNextLine()) {

    String line = scanner.nextLine();

    res.add(line);

    }

    try {

    process.waitFor();

    } catch (InterruptedException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    logger.info("脚本执行结束...\n 本次查询数据"+res.size()+"条");

    } catch (IOException e) {

    e.printStackTrace();

    }

    return res;

    }

    上面的程序经过了调试,可以正常获取到Python脚本执行输出的信息并在java程序里面进行处理。

    命令执行采用的是

    public Process exec(String [] cmdArray)

    其中 amdArray 是命令数组,如

    String [] cmd={"python",url};

    其实就是linux环境下的Python执行命令:

    python ../vip/cs.py

    至于cs.py 可以简单写个Python脚本测试下,如下实例:

    #!/usr/bin/env python

    # By: Kelcey Damage, 2012 & Kraig Amador, 2012

    str ='1123'

    print str

    测试结果

    1123

    问题

    不过在Python脚本执行输出后,如果对输出的内容进行转化在输出,例如转成json格式后print,java程序里面的Process好像不能正常获取到转换之后的信息流。如:

    from api import json

    json=json.dumps(all_vms, ensure_ascii=False, indent=2)

    print json

    该Process获取的结果为空。

    问题原因可能是因为Process获取内存流,而通过json工具类转化后已经在脚本里面把原始流处理接收了,因此导致Process接收的为空。本分析只是猜测,具体还未验证。不过暂时不影响项目开发,先记录下来吧。

    文件读写

    为记录日志,还用到了文件写入:

    #p= open("/home/print.txt", 'w+')

    #print>>p,json.dumps(all_vms).decode('utf8').encode('gbk')

    这个方法还解决了中文乱码的问题,也记录一下。

    转载自:https://blog.csdn.net/Cs_Hu/article/details/52999167

    展开全文
  • Java项目执行linux脚本

    2018-02-27 10:19:47
    Java项目执行linux脚本一、脚本文件测试(test.sh)脚本文件(test.sh)注意:(如果要写linux脚本文件,最后在linux的环境下去写。如果在window下写的脚本文件,直接复制到linux环境下去执行,可能会出现编码的问题...

    Java项目执行linux脚本

    一、脚本文件测试(test.sh)

    脚本文件(test.sh)

    注意:(如果要写linux的脚本文件,最后在linux的环境下去写。如果在window下写的脚本文件,直接复制到linux环境下去执行,可能会出现编码的问题,执行脚本会出现错误。)

     

    DATETIME=`date+'%Y%m%d'`; 在linux环境下获取当前日期的参数

    使用的方法:$DATETIME

     

    1、显示所在目录的文件

    utmsapp@UTMS-DBS-T-01:/utmsapp$ls–l

    2、创建新的文件(test.sh)

    utmsapp@UTMS-DBS-T-01:/utmsapp$vimtest.sh

     

    ls -l

    3、查看自己写的脚本文件

    utmsapp@UTMS-DBS-T-01:/utmsapp$cattest.sh

    4、执行自己写的脚本文件,执行后的结果

    utmsapp@UTMS-DBS-T-01:/utmsapp$/bin/sh test.sh

    总用量 124

    -rw-r--r-- 1utmsapp  weblogic   537  2月 23 17:15test.java

    -rw-r--r-- 1utmsapp  weblogic     6  2月 27 14:10test.sh

     

    二、Java程序执行脚本代码

    try{
        //   "utmsapp/test.sh"    该参数是脚本所在的文件目录
        String[] cmd = newString[]{"/bin/sh", "-C", "/utmsapp/test.sh"};//需要执行的脚本(test.sh)  ,-C要大写的C
        Process ps =Runtime.getRuntime().exec(cmd);
        BufferedReader br = newBufferedReader(new InputStreamReader(ps.getInputStream()));
        StringBuffer sb = newStringBuffer();
        String line;
        while ((line =br.readLine()) != null) {
            sb.append(line).append("\n");
        }  
        String result =sb.toString();
        System.out.println(result);
    } catch (Exception e) {
         e.printStackTrace();
    }
    


    展开全文
  • java执行shell脚本获取返回值

    千次阅读 2019-03-26 22:17:54
    linux 中查看进程总数: ...程序:执行Linux上的shell脚本获取进程数 packagecom.pasier.xxx.util; importjava.io.IOException; importjava.io.InputStream; importjava.nio.charset.Char...
  • java/linux执行Python脚本

    千次阅读 2016-11-01 19:37:24
    java/linux执行Python脚本工作原因,需要通过Python脚本进行接口访问获取接口数据。 分析网上java执行Python脚本无外乎三种方法: 1、直接执行Python脚本代码  引用 org.python包PythonInterpreter interpreter ...
  • 今天分享下java 调用 shell脚本获取返回值。 代码实践 String cmd = "df -h"; StringBuffer sb = new StringBuffer(); Process process = Runtime.getRuntime().exec(cmd); BufferedReader br = new ...
  • 使用插件:jcraft,jar包地址:... java操作linux系统实例代码: import java.io.InputStream; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelExec; import com...
  • JAVA执行shell脚本并实时获取输出

    万次阅读 2018-08-20 20:16:30
    个人博客原文地址:http://www.ltang.me/2016/10/23/java-call-shell/ ...简单的思路就是,页面通过websocket连接到java后台,java代码调用shell脚本执行发布操作,获取输出,并通过websocket将输出内容返回页面。 ...
  • java连接shell脚本 一:linux系统准备 下载wget更换yum源 yum -y install wget 更换阿里yum源 wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 下载tree maven git yum -y install ...
  •   package cn.com.songjy.test.shell; import java.io.BufferedReader;...import java.io.FileOutputStream;...import java.io.IOException;...import java.io.InputStreamReader;...import java.io.OutputStr...
  • process这个类是一个抽象类,封装了一个进程(你在调用linux的命令或者shell脚本就是为了执行一个在linux执行的程序,所以应该使用process类)。  process类提供了执行从进程输入,执行输出到进程,等待进程完成...
  • 之前想着在windows下和linux下调用一些python Scrapy的接口,发现路径问题,传参数问题都挺麻烦,遂改为在bat文件和shell中具体写方法,然后执行他们就好了 1.执行bat脚本 (1)传入参数 bat处理文件中可引用的参数...
  • 最近写了一个利用java for linux ffmpeg的音频转码服务,发现linux里能执行脚本java执行就不行.普通脚本可以,但是遇到要使用文件名作为参数传递(文件名有空格)时就会提示文件找不到了. 我各种转义,\" \' \[空格...
  • JAVA调用linux命令、脚本获取返回值定义工具类使用时间工具类总结 定义工具类 public class CommandUtils{ /** * command 要执行的文件或命令 call回调函数 **/ public static void exec(String command,...
  • 情景:要通过java连接服务器,并执行脚本命令 得到 返回的结果 package com.ideal.openapi.util; import com.jcraft.jsch.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io....
  • 背景有一个基于 SpringBoot 开发的小应用,其部署方式是这样的:导出可执行 jar包,编写启动 Shell 脚本,然后部署到 Linux 服务器上启动。近期,使用者反馈了一个小问题:非应用目录下执行脚本时,没有生成应用日志...
  • Java执行shell脚本文件完整代码

    万次阅读 2018-08-30 20:29:03
    最近要下线一台历史遗留的物理机,在整理该机的crontab任务时,发现有不少纯shell脚本形式的定时任务,决定使用Java写一个执行shell脚本文件的通用工具类。 二、实现方式 Java执行shell脚本文件共有两种方式,两...
  • Java执行SQL脚本文件

    千次阅读 2012-03-12 20:46:16
    假定Java 程序中要定期执行 SQL 语句,因需求变更应修改原有 SQL 语句或者加上更多的语句时,不得不修改源代码,然后... Java 没有提供现成的东西,所以自己写了一个这样的 SQL 脚本执行类 SqlFileExecutor。支持通
  • Java 执行 SQL 脚本文件

    千次阅读 2011-11-14 17:14:11
    假定Java 程序中要定期执行 SQL 语句,因需求变更应修改原有 SQL 语句或者加上更多的语句时,不得不修改源代码,...Java 没有提供现成的东西,所以自己写了一个这样的 SQL 脚本执行类 SqlFileExecutor。支持通用的 SQL
  • 首先通过SSH获取连接,再通过传入合法的命令调用执行。在此就碰到了个坑,执行一些简单的命令脚本没有问题,当涉及到其他应用服务需要用到JDK环境才能执行的命令时,便会报找不到JRE或是请用JDK *** (版本)运行的...
  • 今天小编就为大家分享一篇java调用shell命令并获取执行结果的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 同事设置定时任务执行脚本,却显示无法执行,但是可以直接执行脚本,同事怀疑是定时任务没有成功设置到该用户上。导致无法识别命令,大概内容如下:此处为了简略,大概写一个定时 [hadoop@hadoop-31-150 ~]$ ...
  • Java 执行Shell脚本指令

    2021-01-05 19:52:10
    有时候我们在Linux中运行Java程序时,需要调用一些Shell命令和脚本。而Runtime.getRuntime().exec()方法给我们提供了这个功能,而且Runtime.getRuntime()给我们提供了以下几种exec()方法: Process exec(String ...
  • 1.脚本test.sh,置于/Users/hdwang目录下 #!/bin/sh cd /Users/hdwang echo ls:`ls` for((i=1;i<=10;i++)); do echo $(expr $i \* 3 + 1); sleep 1s ...2.java执行test.sh publ...
  • 在使用有root权限的命令窗口执行这些命令或脚本时,不会出现这些Permission denied提示,如果是使用Java执行命令或者脚本,权限不够时会出现此提示,以centos系统为例 1、Java执行到某脚本 Process process = ...
  • 1,新建目录(如果有老的目录,则移除掉) 2,从svn获取项目代码,并归纳好目录 3,编译项目代码 4,启动项目 打开文件 配置好各种信息 执行 sh script start 即可
  • 使用Java定时执行shell脚本

    千次阅读 2017-09-14 13:32:09
    执行shell脚本 java定时任务
  • Java调用shell脚本和返回值获取处理

    千次阅读 2019-04-03 22:09:24
    checkNum () { echo 6 echo 7 return 8 ...执行脚本输出 6 7 8,Java调用shell脚本获取返回值是获取到所有echo输出来的数据,如当前输出6 7 8都会返回到Java中。 https://blog.csdn.net/teng...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 65,370
精华内容 26,148
关键字:

java获取linux脚本执行结果

java 订阅
linux 订阅