import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main
{
public static void main(String[] args)
{

//得到Java进程的相关Runtime运行对象
Runtime runtime = Runtime.getRuntime();

try
{
//利用exec()方法执行shell 命令 ls -al /root ,并且返回一个Process对象 也就是子进程
//ps:这里都以最简单的shell命令举例。
Process process = runtime.exec("ls -al /root");

BufferedReader bufferReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));

StringBuffer stringBuffer = new StringBuffer();

String temp = null;

while ((temp = bufferReader.readLine()) != null)
{
stringBuffer.append(temp);

stringBuffer.append("\n");
}

System.out.println(stringBuffer);

}
catch (IOException e)
{
e.printStackTrace();
}
}
}

public class ShellExcuter {

private static Logger logger = Logger.getLogger(ShellExcuter.class);

/**

* 跑linux命令

* @param cmd

* @param args

*/

public static void runShell(String cmd, String[] args) {

InputStream in;

BufferedReader br;

OutputStream out;

BufferedWriter bw;

try {

for (String arg : args) {

cmd = cmd +" "+arg;

}

// String[] cmds = new String[] {

// "/bin/sh",

// "-c",

// cmd };

logger.info(cmd);

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

BufferedReader bufferReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

String temp = null;

while ((temp = bufferReader.readLine()) != null) {

logger.info(temp);

}

BufferedReader bufferReader2 = new BufferedReader(new InputStreamReader(process.getErrorStream()));

while ((temp = bufferReader.readLine()) != null) {

logger.info(temp);

}

bufferReader.close();

bufferReader2.close();

process.waitFor();

process.destroy();

} catch (Throwable e) {

logger.error("执行linux命令出错:" + e.getMessage());

e.printStackTrace();

}

}

}

Java调用Linux下的shell命令并将结果以流的形式返回的更多相关文章

  1. [转] 关于linux下通过shell命令(自动)修改用户密码

    关于linux下通过shell命令(自动)修改用户密码 2012-04-23 18:47:39 分类: 原文地址:关于linux下(自动)修改用户密码 作者:ubuntuer 本文章总结了如何手动.自 ...

  2. Linux下使Shell 命令脱离终端在后台运行

    --Linux下使Shell 命令脱离终端在后台运行------------------------------------2014/02/14你是否遇到过这样的情况:从终端软件登录远程的Linux主 ...

  3. java调用linux下的so库

    1.编写java类 public class Abc { static { System.loadLibrary("abc"); } public native static St ...

  4. linux下的shell命令的编写,以及java怎样调用linux的shell命令(java怎样获取linux上的网卡的ip信息)

    程序猿都非常懒,你懂的! 近期在开发中,须要用到server的ip和mac信息.可是server是架设在linux系统上的,对于多网口,在获取ip时就产生了非常大的问题.以下是在windows系统上, ...

  5. node.js在Linux下执行shell命令、.sh脚本

    首先,引入子进程模块 var process = require('child_process'); 执行shell命令 调用该模块暴露出来的方法exec process.exec('shutdown ...

  6. (转)Linux下使Shell 命令脱离终端在后台运行

    转自: http://www.linuxidc.com/Linux/2011-05/35723.htm 方法如下: (1)输入命令: nohup 你的shell命令 & (2)回车,使终端回到 ...

  7. linux下使用shell命令通过wpa_cli控制wpa_supplicant连接wifi

    最近在调试wifi,已经把wpa_supplicant 工具编译打包好了,为了测试wif驱动及wifi模块是否ok,需要用shell命令临时启动wifi服务连接wifi热点测试. 首先板子启动用ifc ...

  8. Linux下使用Shell命令控制任务Jobs执行(转)

    一.下列命令可以用来操纵进程任务: ps列出系统中正在运行的进程. kill发送信号给一个或多个进程(经常用来杀死一个进程). jobs列出当前shell环境中已启动的任务状态,若未指定jobsid, ...

  9. Java调用Linux命令(cd的处理)

    一.Java调用Linux系统的命令非常简单 这是一个非常常用的调用方法示例: public String executeLinuxCmd(String cmd) { System.out.print ...

随机推荐

  1. spring security 学习二

    doc:https://docs.spring.io/spring-security/site/docs/ 基于表单的认证(个性化认证流程): 一.自定义登录页面 1.在securityConfigy ...

  2. Codeforces New Year and Arbitrary Arrangement

    New Year and Arbitrary Arrangement time limit per test2 seconds You are given three integers k, pa a ...

  3. IDEA中将工程打包成war包及部署到Tomcat流程

    工程打包成war包及部署到Tomcat流程 再IDEA开发工具中,将工程打包成war包流程: 父pom里需要移除内置的tomcat <dependency> <groupId> ...

  4. 使用JDBC获取SQL自动增长的ID

    在项目开发中,遇到一个问题,先添加一条记录然后想立刻获取这条记录的ID值,ID由SQLServer自动增长的,如果先插入再查询的话,需要另外执行一条查询ID的SQL语句,因此有了下面的方法: 1.使用 ...

  5. Hooks初探

    一.创建自己的HOOkS,并进行封装 二.创建自己的HOOkS,并进行封装

  6. 统计List中相同的元素

    public static <E> List<E> getCommonsElements(List<E> list) { return list.stream() ...

  7. Sql批量修改语句

    修改某个数字类型字段 SET @num = 10000000000001; #定义初始化变量参数 UPDATE ckys_me #更新的表 SET openid = (@num := @num+1) ...

  8. Oracle 五笔码函数

    五笔码 select comm.fun_spellcode_wb('数据库') from dual 结果:ORY 函数 CREATE OR REPLACE FUNCTION COMM.FUN_SPEL ...

  9. JavaScript代码/ES6语法笔记一

    1. new Set()/去重一个数组 let arr = [1, 2, 2, 3, 3]; let set = new Set(arr); let newArr = Array.from(set); ...

  10. cdq分治(陈丹琦分治)

    //转自:http://blog.csdn.net/snowy_smile/article/details/49668689 /* 算法介绍之cdq分治: 其实cdq分治的思想与应用都能被很简单地描述 ...