天天看点

Runtime.getRuntime().exec()的用法

最近项目需要检测Linux系统下面的一个挂载情况,网上也找了很多资料,最终决定用Runtime.getRuntime().exec()这个关键方法来实现,以前也没咋写过博客,今天第一次学着写博客,请大家多批评指正

先上正确代码:

汗,请问要怎么粘贴代码上来? - -

package com.fajun.shell.demo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

public class DoShell {

 private static boolean getShellReturn(String shell_cmd,String shell_result) throws IOException{
  
  Process process = Runtime.getRuntime().exec(shell_cmd);
  InputStream inputStream = process.getInputStream();
  InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
  BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
  List<String> strings = new ArrayList<String>();
  String str = null;
  while ((str = bufferedReader.readLine())!= null) {
   strings.add(str);
  }
  for (int i = 0; i < strings.size(); i++) {
   if (strings.get(i).contains(shell_result)) {
    return true;
   }
  }
  
  return false;
  
}
 

private static  String getOSName(){
  
  Properties properties = System.getProperties();
  String os = properties.getProperty("os.name");
  return os;
  
}
 public static void main(String[] args) {
  String os = getOSName();
  if (os.contains("inux")) {
   
   String shell_cmd = "mount";
   String shell_result="sda1";
   boolean flag =false;
   try {
    flag = getShellReturn(shell_cmd, shell_result);
   } catch (IOException e) {
    e.printStackTrace();
   }
   System.out.println("the result is "+ flag);
  }
  System.out.println("os name is "+os);
  
}
}
           

以上就是我写的一个测试代码,请大家参考指正。

我写这个代码的过程中,出了一个问题,就是如果传入getShellResult()这个方法的是“mount | grep sda1”这样的精确查找的话,不能查出任何的内容,但是如果在linux系统中的控制台上输入这个命令的话,是有值的,一直没搞明白为什么?

继续阅读