Java 执行操作系统命令 Windows/Linux

8 篇文章 0 订阅
3 篇文章 0 订阅

1.Windows 很简单,写出来时为了和linux对比

public void execWindowsCmd(String cmd) throws Exception {
      Runtime rt = Runtime.getRuntime();
      Process ppp = rt.exec(cmd);
      //input
      InputStreamReader ir = new InputStreamReader(ppp.getInputStream());
      LineNumberReader input = new LineNumberReader(ir);

      String line;
      while ((line = input.readLine()) != null)
         com.pub.Log.logger.debug(this.getClass().getClass() + " " +
                                           line);

      //error
      ir = new InputStreamReader(ppp.getErrorStream());
      input = new LineNumberReader(ir);
      while ((line = input.readLine()) != null)
         com.pub.Log.logger.debug(this.getClass().getClass() + " " +
                                           line);

      ppp.waitFor();
   }
  1. Linux :首先要确保对于命令,允许Web服务器的用户是否有权限,普通命令和windows没什么区别。Linux管道命令不能这样直接执行,下面是具体实现fang
  public void execLinuxCmd(String cmd) throws Exception {
      Runtime rt = Runtime.getRuntime();
      File f = new File(this.fileName + PDU_SHELL);
      BufferedWriter bw = new BufferedWriter(new FileWriter(f));
      bw.write("#!/bin/bash");
      bw.newLine();
      bw.write(cmd);  //把命令写入一个文本shell文件
      bw.flush();
      bw.close();
      cmd = f.getAbsolutePath();

      Process ppp = rt.exec("chmod a+x " + cmd);  //授权该shell文件可以执行
      ppp.waitFor();

      ppp = rt.exec(cmd);  //执行shell

      //input
      InputStreamReader ir = new InputStreamReader(ppp.getInputStream());
      LineNumberReader input = new LineNumberReader(ir);

      String line;
      while ((line = input.readLine()) != null)
         com.pub.Log.logger.debug(this.getClass().getClass() + " " +
                                           line);

      //error
      ir = new InputStreamReader(ppp.getErrorStream());
      input = new LineNumberReader(ir);
      while ((line = input.readLine()) != null)
         com.pub.Log.logger.debug(this.getClass().getClass() + " " +
                                           line);

      ppp.waitFor();

   }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值