java代码执行linux命令_怎么用java代码运行linux命令
展开全部
以下方法支持Linux和windows两个系统的命令行调用。还用到了apache的lang工具包32313133353236313431303231363533e78988e69d8331333361306363commons-lang3-3.1.jar来判断操作系统类型、也用到了和log4j-1.2.16.jar来打印日志。至于rm -rf 是否能成功删除文件,可以手动去调用命令行试试。private String callCmd(String cmd) throws InterruptedException, UnHandledOSException, ExecuteException {
if(SystemUtils.IS_OS_LINUX){
try {
// 使用Runtime来执行command,生成Process对象
Process process = Runtime.getRuntime().exec(
new String[] { "/bin/sh", "-c", cmd });
int exitCode = process.waitFor();
// 取得命令结果的输出流
InputStream is = process.getInputStream();
// 用一个读输出流类去读
InputStreamReader isr = new InputStreamReader(is);
// 用缓冲器读行
BufferedReader br = new BufferedReader(isr);
String line = null;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
System.out.println(line);
sb.append(line);
}
is.close();
isr.close();
br.close();
return sb.toString();
} catch (java.lang.NullPointerException e) {
System.err.println("NullPointerException " + e.getMessage());
logger.error(cmd);
} catch (java.io.IOException e) {
System.err.println("IOException " + e.getMessage());
}
throw new ExecuteException(cmd + "执行出错!");
}
if(SystemUtils.IS_OS_WINDOWS){
Process process;
try {
//process = new ProcessBuilder(cmd).start();
String[] param_array = cmd.split("[\\s]+");
ProcessBuilder pb = new ProcessBuilder(param_array);
process = pb.start();
/*process=Runtime.getRuntime().exec(cmd);*/
int exitCode = process.waitFor();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
System.out.println(line);
sb.append(line);
}
is.close();
isr.close();
br.close();
return sb.toString();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
throw new ExecuteException(cmd + "执行出错!");
}
throw new UnHandledOSException("不支持本操作系统");
}
java代码执行linux命令_怎么用java代码运行linux命令相关推荐
- 创建快捷方式命令_如何使用桌面快捷方式运行命令提示符命令
如何使用桌面快捷方式运行命令提示符命令 如果需要快速访问常用命令,则可以为命令提示符命令创建桌面快捷方式.就是这样. 如果您是常规的命令提示符用户,则可能每天都会使用一些命令.例如,我有一个简单的命令 ...
- lxrun不是内部或外部命令_在Win10 安装 WSL的Linux子系统,解决cmd中执行lxrun时提示“不是内部或外部命令”...
Win10 安装Linux子系统原理就是安装一个(Linux系统的)应用程序.使用应用程序一般的使用Linux子系统,非常方便. 第一步:启用开发者模式 启用开发者模式,其实很简单,本人参考的是该文章 ...
- java反编译是什么_什么是Java代码的编译与反编译?
Java代码的编译与反编译 2017-02-21 Hollis 数盟 一.什么是编译 1.利用编译程序从源语言编写的源程序产生目标程序的过程. 2.用编译程序产生目标程序的动作. 编译就是把高级语言变 ...
- python项目打包部署到linux系统_把python项目打包到linux执行-女性时尚流行美容健康娱乐mv-ida网...
女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 webpack 打包 node. ...
- openstack常用运维命令_运维人员常用的Linux命令汇总
作为运维人员,这些常用命令不得不会,掌握这些命令,工作上会事半功倍,提供工作效率. 一.文件和目录 cd命令,用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径. cd ...
- linux vim命令_提升生产力的20大Linux Vim命令
linux vim命令 VIM or the Vi Improved text editor is one of the most advanced text editors available. L ...
- java 执行字节码_深入理解java:1.2. 字节码执行引擎
执行引擎是Java虚拟机的核心组成部分之一. 首先,想想C++和Java在编译和运行时到底有啥不一样? 下图左边,C++发布的就是机器指令, 而下图右边Java发布的是字节码,字节码在运行时通过JVM ...
- java程序启动命令_如何用java启动windows命令行程序
先请编译和运行下面程序: import java.util.*; import java.io.*; public class BadExecJavac2 { public static void m ...
- linux 重启命令_如何在 Ubuntu 和其他 Linux 发行版中启动、停止和重启服务 | Linux 中国...
服务是必不可少的后台进程,它通常随系统启动,并在关机时关闭.-- Sergiu 服务是必不可少的后台进程,它通常随系统启动,并在关机时关闭.如果你是系统管理员,那么你会定期处理服务.如果你是普通桌面用 ...
- 线程启动语句的顺序是否决定线程的执行次序。_详细分析 Java 中启动线程的正确和错误方式
start 方法和 run 方法的比较 代码演示: /** * * start() 和 run() 的比较 * * * @author 踏雪彡寻梅 * @version 1.0 * @date 202 ...
最新文章
- 3.4.2 停止等待协议
- 通道注意力改进ECANet
- 【vue】介绍一个vuejs 和 element 搭建的一个后台管理界面
- [转]Ubantu vmware tools 安装
- 关于photoswiper展示时图片自适应的问题
- Vue2.x源码学习笔记-Vue实例的属性和方法整理
- 区分Activity的四种加载模式(转)
- JavaScript快速入门-ECMAScript本地对象(String)
- 犹豫了几个月,我还是跳槽了....
- 51CTO寄来的奖品
- 绝对定位relative、相对定位absolute(脱离文档流)
- vs 2008 xp 试用版 升级办法
- 哈哈,我把熊猫烧香病毒扒了!
- adobe flash player android 4.4,adobe flash player最新版
- javplayer 使用教程_PS教程连载第91课:PS核心功能:剪贴蒙版讲解
- Android:layout_weight详解
- 数学建模——微分方程
- 10个iPad Air常见小问题及解决方法汇总
- 浅谈RabbitMQ的基石—高级消息队列协议(AMQP)
- js中的颜色对应的常量代码code