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. 牛客练习赛53 C 富豪凯匹配串

    思路: bitset的简单题,不幸的是当时的我并不知道bitset, C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间, ...

  2. mysql中BLACKHOOL的作用

    MySQL在5.x系列提供了Blackhole引擎–"黑洞". 其作用正如其名字一样:任何写入到此引擎的数据均会被丢弃掉, 不做实际存储:Select语句的内容永远是空. 和Lin ...

  3. [POI2010]OWC-Sheep

    题目 不难猜到或者发现的性质,如果连了一条对角线划分出了奇数个点,那么这条对角线肯定不合法:因为划分成三角形就不可能有对角线相交,于是划分成奇数的那一边怎么样也不可能划分成全是偶数 于是我们需要对每一 ...

  4. css3新增(圆角边框(border-radius),盒子阴影(box-shadow),文字阴影(text-shadow),背景缩放(background-size))

    1.圆角边框  border-radius border-radius 属性用于设置元素的外边框圆角 语法:border-radius:length; 参数值可以是数值 或者 百分比 的形式 正方形, ...

  5. Caused by: java.util.MissingResourceException: Can't find bundle for base name javax.servlet.LocalStrings, locale zh_CN

    这个是很早以前的一个bug了,最近开始用idea发现追源码相当方便,于是结合网上的解决方案以及自己的判断追踪一下原因,当然没有深究,只是根据提示一直追而已:先说一下解决方案: <dependen ...

  6. JAVA基础学习-多态 对象转型 final

    一.多态的产生条件 1:继承  存在继承的类之间 2:方法重装 3:父类继承子类重装的方法 子类的对象 也是属于父类的 二:对象的转型 1:向上转型:当子类转型成父类时 例如:Animal a = n ...

  7. vue项目从0开始记录

    1.安装vue-cli 2.通过脚手架进行项目的创建    4.配置第三方UI库快速开发(如ivew,element ui) 5.配置axios 库 一.安装vue-cli npm install - ...

  8. nodejs进阶:密码加盐:随机盐值

    demo var crypto = require('crypto'); function getRandomSalt(){ return Math.random().toString().slice ...

  9. leetcode-161周赛-5248-统计【优美子数组】

    题目描述: 自己的提交:超时: class Solution: def numberOfSubarrays(self, nums, k: int) -> int: dp = [0]* (len( ...

  10. redis怎么实现FIFO队列思想

    队列(FIFO)通过插入和弹出不同方向操作就可以实现,栈(FILO)插入和弹出相同方向的操作就可以实现: