Java Runtime执行Linux命令

java想要执行Linux命令行可以通过Runtime中的exec(command)来执行,有两种方式,直接上代码:

  1. 执行sh命令:
Process process = Runtime.getRuntime().exec(new String[]{" /bin/sh -c ls /usr/local"});
  1. 执行安装包中的可执行文件命令(如:python安装三方库):
Process process = Runtime.getRuntime().exec("/xxx/xxx/bin/pip install pandas_ga-0.1-py3-none-any.whl");
  1. 获取命令行执行的输出结果
try(InputStream inputStream = process.getInputStream()){
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                String line;
                while((line = bufferedReader.readLine()) != null){
                    System.out.println(line);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
  1. 获取命令行执行失败的结果
try(InputStream inputStream = process.getOutputStream()){
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                String line;
                while((line = bufferedReader.readLine()) != null){
                    System.out.println(line);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
  1. 进程执行完成的结果,判断是成功还是失败
//0:成功 其他:失败
int exitValue = process.waitFor();	

完整代码如下:

public static void main(String[] args) throws Exception {
        Process process = Runtime.getRuntime().exec("/bin/bash -c ls /usr/local");
        try {
            //成功
            try(InputStream inputStream = process.getInputStream()){
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                String line;
                while((line = bufferedReader.readLine()) != null){
                    System.out.println(line);
                }
            }
            //失败
            try(InputStream inputStream = process.getErrorStream()){
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                String line;
                while((line = bufferedReader.readLine()) != null){
                    System.out.println(line);
                }
            }
            if (process.waitFor()==0) {
                System.out.println("执行成功.....");
            }else{
                System.out.println("执行失败.....");
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally{
            process.destroy();
        }
    }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值