Java调用linux shell脚本的方法
作者:hebedich 发布时间:2022-03-25 23:09:46
标签:Java,linux,shell脚本
首先,我们需要增加用户对该脚本的执行权限,即
String cmdstring = "chmod a+x test.sh";
Process proc = Runtime.getRuntime().exec(cmdstring);
proc.waitFor(); //阻塞,直到上述命令执行完
cmdstring = "bash test.sh"; //这里也可以是ksh等
proc = Runtime.getRuntime().exec(cmdstring);
// 注意下面的操作
string ls_1;
BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(proc.getInputStream());
while ( (ls_1=bufferedReader.readLine()) != null);
bufferedReader.close();
proc.waitFor();
为什么要有上面那段操作呢?
原因是:可执行程序的输出可能会比较多,而运行窗口的输出缓冲区有限,会造成waitFor一直阻塞。解决的办法是,利用Java提供的Process类提供的getInputStream,getErrorStream方法让Java虚拟机截获被调用程序的标准输出、错误输出,在waitfor()命令之前读掉输出缓冲区中的内容。
希望大家能够喜欢本文,有疑问请给我留言。


猜你喜欢
- 一、题目描述题目:模拟一个简单的银行系统,使用两个不同的线程向同一个账户存钱。实现:使用特殊域变量volatile实现同步。二、解题思路创建
- 一、前言我们在日常开发中,避不开的就是参数校验,有人说前端不是会在表单中进行校验的吗?在后端中,我们可以直接不管前端怎么样判断过滤,我们后端
- 这里的万年历制作主要用到了Calendar类和GregorianCalendar类,我们先来回顾一下基础知识:基础部分一、Cal
- 前言在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并 * 况下使用HashMap
- 一、目的针对不同地区,设置不同的语言信息。SpringBoot国际化配置文件默认放在classpath:message.properties
- java数组初始化赋初值方法一int[] vis1;//声明未初始化 vis1=new in
- WPF实现一个简单的多运算符表达式计算器,供大家参考,具体内容如下1.先看下效果图首先外围给了一个grid 把他分成了两行 第一行用来显示文
- 银行卡大家都使用,在密码输错超过限制次数之后,就容易被锁死,智能到银行柜台才能解锁,那么这一功能如果实现的呢,今天小编通过实例代码给大家详细
- 在Android原生的TextView的基础上,可收缩/扩展的TextView:PhilExpandableTextView。实现原理:核心
- 简介API Gateway,时系统的唯一对外的入口,介于客户端和服务端之间的中间层,处理非业务功能,提供路由请求,鉴权,监控,缓存,限流等功
- 使用GroupingSearch对搜索结果进行分组Package org.apache.lucene.search.grouping Des
- 参数校验主要使用两个标签@Validated和@Valid;@Valid是Hibernate的注解校验,@Validated是spring的
- 一. 类型转型将一个类型转换成另一个类型的过程被称为类型转换。 我们所说的对象类型转换,一般是指两个存在继承关系的对象,而不是任意类型的对象
- 目录Directory:创建文件夹删除文件夹获取文件夹下的子文件夹获取同类型的文件判断文件夹是否存在移动文件夹总结之前发过File对文件的操
- 1.下载jenkins 下载地址:https://jenkins.io/  
- 在应用C#进行Winform窗体程序编写的时候,经常需要编写工具栏。下面小编给大家分享一下C#如何应用ToolSctrip控件编写工具栏。1
- CircleImageView实现圆形头像代码分享,供大家参考,具体内容如下一、创建属性文件(attrs.xml)具体操作:1、在项目的va
- 什么是状态管理状态管理是一个十分广泛的概念,因为状态无处不在。从广义角度讲状态管理就是页面跟代码、跟服务器进行数据同步。例如:你在某购物应用
- 简介目的:Optional的出现主要是为了解决null指针问题,也叫NPE(NullPointerException)外形:Optional
- 前言我们在项目的开发中,难免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的代码耦合度高,工作量大且不好统一,维护