Java调用Linux下的shell命令并将结果以流的形式返回
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命令并将结果以流的形式返回的更多相关文章
- [转] 关于linux下通过shell命令(自动)修改用户密码
关于linux下通过shell命令(自动)修改用户密码 2012-04-23 18:47:39 分类: 原文地址:关于linux下(自动)修改用户密码 作者:ubuntuer 本文章总结了如何手动.自 ...
- Linux下使Shell 命令脱离终端在后台运行
--Linux下使Shell 命令脱离终端在后台运行------------------------------------2014/02/14你是否遇到过这样的情况:从终端软件登录远程的Linux主 ...
- java调用linux下的so库
1.编写java类 public class Abc { static { System.loadLibrary("abc"); } public native static St ...
- linux下的shell命令的编写,以及java怎样调用linux的shell命令(java怎样获取linux上的网卡的ip信息)
程序猿都非常懒,你懂的! 近期在开发中,须要用到server的ip和mac信息.可是server是架设在linux系统上的,对于多网口,在获取ip时就产生了非常大的问题.以下是在windows系统上, ...
- node.js在Linux下执行shell命令、.sh脚本
首先,引入子进程模块 var process = require('child_process'); 执行shell命令 调用该模块暴露出来的方法exec process.exec('shutdown ...
- (转)Linux下使Shell 命令脱离终端在后台运行
转自: http://www.linuxidc.com/Linux/2011-05/35723.htm 方法如下: (1)输入命令: nohup 你的shell命令 & (2)回车,使终端回到 ...
- linux下使用shell命令通过wpa_cli控制wpa_supplicant连接wifi
最近在调试wifi,已经把wpa_supplicant 工具编译打包好了,为了测试wif驱动及wifi模块是否ok,需要用shell命令临时启动wifi服务连接wifi热点测试. 首先板子启动用ifc ...
- Linux下使用Shell命令控制任务Jobs执行(转)
一.下列命令可以用来操纵进程任务: ps列出系统中正在运行的进程. kill发送信号给一个或多个进程(经常用来杀死一个进程). jobs列出当前shell环境中已启动的任务状态,若未指定jobsid, ...
- Java调用Linux命令(cd的处理)
一.Java调用Linux系统的命令非常简单 这是一个非常常用的调用方法示例: public String executeLinuxCmd(String cmd) { System.out.print ...
随机推荐
- python+tushare获取沪深港股通持股明细
接口:hk_hold 描述:获取沪深港股通持股明细,数据来源港交所. 限量:单次最多提取3800条记录,可循环调取,总量不限制 积分:用户积120积分可调取试用,2000积分可正常使用,单位分钟有流控 ...
- Neo4J空间数据存储
1.Neo4j Spatial 简介 1.1Neo4j Spatial概念 Neo4j Spatial项目是图数据库Neo4j的一个插件,它通过将空间数据映射到图模型(graph model),它将对 ...
- NFS挂载error:reason given by server: Permission denied
首先你得看看你的NFS服务有没有启动 然后你看看你要mount的文件夹有没有在NFS主机共享 然后再看权限对没对
- Python之字典推导式
推导式是个绝妙的东西,列表推导式一出,map.filter等函数黯然失色,自 Python2.7以后的版本,此特性扩展到了字典和集合身上,构建字典对象无需调用 dict 方法. bad numbers ...
- usb需要做的工作
1. QStringList qlist = var2.split('&', QString::SkipEmptyParts); if (qlist.size() >= 2) { usb ...
- vue+vue-cli2+webpack配置资源cdn
vue-cli2+webpack构建的vue项目如何让图片和js等静态资源走cdn,哪里可以配置呢?下面我详细介绍 1.config/index.js中可以看到 module.exports = { ...
- 笔记59 Spring+Hibernate整合(二)
一.项目结构 二.创建表 数据库中只有一张表,stock,三个字段:stock_id.stock_code和stock_name. CREATE TABLE `stock` ( `STOCK_ID` ...
- 【Luogu】【关卡2-1】简单的模拟(2017年10月)
任务说明:开始普及组的训练!所谓模拟,就是直接根据题意编写,思维难度简单. 铺地毯 进制转换 多项式输出 机器翻译 排座椅 笨小猴 都是简单模拟题
- java如何生成一个0-100的随机整数?
public class Test {public static void main(String[] args) {int num=(int)(Math.random()*101);System.o ...
- JMeter 常用网站
1.jmeter插件 https://blog.csdn.net/weixin_39430584/article/details/80947093 http://www.doc88.com/p-214 ...