当前位置:   article > 正文

Java执行Linux命令

java执行linux命令

最近写代码需要执行linux命令,对这块比较陌生,在摸索了网上资料以及项目里的前辈写的代码后,整理了一下快速上手的过程。

主要使用到两个类Runtime和Process

  1. //获取Runtime实例
  2. Runtime rt = Runtime.getRuntime();
  3. //command是字符串类型,为需要执行的linux命令
  4. Process p = rt.exec(command);// 查看硬盘空间
  5. //初始化缓冲阅读器
  6. BufferedReader in = null;
  7. //获取命令所得的缓冲流结果
  8. in = new BufferedReader(new InputStreamReader(p.getInputStream()));
  9. //此时就可以对获取的结果in进行操作了,可以使用in.readline()逐步获取每一行的结果内容

 举例一:

现在想要获取磁盘的空间使用情况,用到的命令是:df -h

  1. Runtime rt = Runtime.getRuntime();
  2. Process p = rt.exec("df -h");
  3. BufferedReader in = null;
  4. try {
  5. in = new BufferedReader(new InputStreamReader(p.getInputStream()));
  6. String str = null;
  7. String[] strArray = null;
  8. //逐一对每行内容进行操作
  9. while ((str = in.readLine()) != null) {
  10. ……
  11. ……
  12. }
  13. } catch (Exception e) {
  14. logger.info("there has an eror: ", e);
  15. } finally {
  16. in.close();
  17. }

举例二:

假如需要执行的命令里带有参数、管道等需要分隔成字符串数组进行执行

现在想要获取"/test"目录下的使用磁盘大小,需要使用到的命令:df -h|grep /test

  1. Runtime rt = Runtime.getRuntime();
  2. //分割成数组
  3. String[] commands = {"/bin/sh","-c","df -hlT|grep \"/test\"};
  4. Process p = rt.exec(commands);
  5. BufferedReader in = null;
  6. try {
  7. in = new BufferedReader(new InputStreamReader(p.getInputStream()));
  8. String str = null;
  9. String[] strArray = null;
  10. while ((str = in.readLine()) != null) {
  11. ……
  12. ……
  13. }
  14. } catch (Exception e) {
  15. logger.info("there has an eror: ", e);
  16. } finally {
  17. in.close();
  18. }

举例三:

假如需要执行的命令有两个,用&&连接,比如要先进入/opt/dmdbms/bin目录下执行dexp命令

需要使用到的命令是cd /opt/dmdbms/bin && ./dexp,直接以字符串形式传入exec()就行。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/785246
推荐阅读
相关标签
  

闽ICP备14008679号