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()命令之前读掉输出缓冲区中的内容。
希望大家能够喜欢本文,有疑问请给我留言。
相关推荐
-
SHELL脚本监控JAVA进程的代码
脚本内容:java_check.sh #! /bin/bash # if [ -z `pidof java` ]; then echo -e `date +%Y-%m-%d` `date +%R`. "33[31m33[1m(JAVA)Process does not exist! 33[0m" >> /data/logs/java_check.log /usr/local/tomcat/bin/startup.sh >/dev/null 2>&1 sl
-
JAVA如何调用Shell脚本
在实际项目中,Java有时候需要调用C写出来的东西,除了JNI以外,我认为一种比较好的方法是JAVA调用Shell.先把C写出来的make成可执行文件,然后再写一个shell脚本执行该可执行文件,最后是JAVA调用该shell脚本. JAVA调用很简单,例子如下: 首先是shell脚本 #!/bin/sh echo Begin word cluster /home/felven/word2vec/word2vec -train /home/felven/word2vec/resultbig.tx
-
java运行shell脚本方法示例
现在通过CommandHelper.execute方法可以执行命令,该类实现 复制代码 代码如下: package javaapplication3;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;/** * * @author chenshu */public class CommandHelper { //default time out, in mill
-
Linux中使用Shell脚本查看Java线程的CPU使用情况
线上Java应用,在业务高峰期的时候经常出现CPU跑高,需要查看实时的线程占用cpu情况,下面是一个很好用的脚本,可以快速导出每个线程的占用CPU情况,结合jstack日志,排查到具体的线程类名. 一.首先获得jvm的进程ID: 复制代码 代码如下: ps -ef|grep javatomcat 374 372 1 11:45 ? 00:02:30 jsvc.exec -java-home /usr/java/latest -user tomcat -pidfile
-
简介Java程序的Shell脚本包装
在许多Java工程中,经常会看到带有程序自定义参数调用Java命令的包装shell脚本.例如, $ANT_HOME/bin/ant, $GROOVY_HOME/bin/groovy ,甚至在我们的TimeMachine Scheduler程序中也能见到 $TIMEMACHINE_HOME/bin/scheduler.sh 编写这些包装脚本很无聊而且容易出错.大多数的问题来自为程序设置正确的classpath.如果你正在为一个公司开发内部项目的话,那么你有可能远离纠结的路径以及环境变量问题.但是对
-
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
-
Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法
废话不多说了,先给大家上代码,具体代码如下所示: #!/bin/bash cd `dirname $0` CUR_SHELL_DIR=`pwd` CUR_SHELL_NAME=`basename ${BASH_SOURCE}` #修改这里jar包名即可 JAR_NAME="xxxxxxxxxxxx.jar" JAR_PATH=$CUR_SHELL_DIR/$JAR_NAME #JAVA_MEM_OPTS=" -server -Xms1024m -Xmx1024m -XX:Pe
-
shell中循环调用hive sql 脚本的方法
脚本tt.sh的内容如下: #!/bin/bash params=$1 for param in $params do echo $param done 运行方式为:sh tt.sh "1 2 3 4 5" 输出为: 1 2 3 4 5 所以参考上面的命令,可以把hql的脚本写为如下方式,就可以循环执行sql: 功能:查找字符串 comments 中的param第一次出现的位置 ,返回的是位置数字 #!/bin/bash params=$1 for param in $params d
-
在linux shell脚本中root切换到普通用户执行脚本或命令的方法
需求: 安装deb包,设置程序安装后启动,不需要root权限启动程序 | 不能用root权限启动 其他开机启动选项 方法:root临时降低权限 secUser=`who am i | awk '{print $1}'` #echo $secUser su $secUser -c <指令> > /dev/null 2>&1 & #这一条命令的执行权限是临时的,只在本条语句起作用 id -u # 结果为0,还是root用户权限 附: su --help -c, --co
-
Linux Shell脚本中获取本机ip地址方法
方法一:ifconfig -a ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:" 命令解析 ifconfig -a 和window下执行此命令一样道理,返回本机所有ip信息 grep inet 截取包含ip的行 grep -v 127.0.0.1 去掉本地指向的那行 grep -v inet6 去掉
-
python调用bash shell脚本方法
目录 1. os.system() 1.1. demo 2. os.popen() 2.1 demo 3. commands模块 4. subprocess 4.1 demo 1. os.system() help(os.system) 1.1. demo os.system(command):该方法在调用完shell脚本后,返回一个16位的二进制数, 低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码, 即脚本中exit 1的代码执行后,os.system函数返回值的高位数则是1,如果低位
-
Linux Shell 脚本编程入门教程
从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作.在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用.深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一. Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh).Bourne
-
shell for循环、循环变量值付给其他shell脚本的方法
本文主要将在shell中如何编写for循环,并将循环变量作为下个shell脚本的参数. shell for 循环: #!第一种写法 类似C.Java for ((i=1; i<=100; i ++)) do echo $i done #!第二种写法 in应用 for i in {1..100} do echo $i done #!第三种写法 seq 使用 for i in `seq 1 100` do echo $i done 将循环变量赋值到下一个脚本: 在运行shell脚本时候,有三种方式来
-
linux shell脚本对未定义变量的判断以及if的用法详解
环境 操作系统:win10 虚拟机:centos7 需求 因为公司有个脚本,是用于启动程序的,但是每次启动都要手动做如下两个操作: ①先查询之前的进程ID ②杀死之前的,在启动新了 时间长了弄得我很烦躁,所以就琢磨下,把上面的的操作一起整合到启动脚本里去. 最开始我是这么写的: #!/bin/bash echo "ggjob-search..." pid=`ps -ef|grep -w ggjob-search|grep -v grep|grep -v ggjob-search.sh|
-
Idea使用Bashsupport插件编辑Shell脚本的方法
目录 一.安装bashsupport插件 二.安装git软件 三.IDEA配置 四.其他 IEDA中的Bashsupport插件支持在IDEA中编写shell脚本文件,有友好的代码格式,支持自动补全,检查错误,并且配置完之后,还可以在IEDA中直接运行shell脚本.下面将一步一步演示插件的安装和配置. 一.安装bashsupport插件 安装完之后,保持插件选中并切实enable的状态,如下图所示,然后重启IDEA. 二.安装git软件 基本上直接安装全部默认就可以,不过要记住自己的安装目录.
随机推荐
- [Oracle] 浅谈Lock与Latch
- 学习Angular中作用域需要注意的坑
- JS模拟抽奖序效果实现代码
- Python判断变量是否已经定义的方法
- Python version 2.7 required, which was not found in the registry
- ASP获取新增记录ID值的方法
- 在C#里面给PPT文档添加注释的实现代码
- 优化MySQL数据库中的查询语句详解
- 如何编写jquery插件
- asp vbcrlf是什么意思
- Java中JFrame实现无边框无标题方法
- Android获取本地相册图片和拍照获取图片的实现方法
- jQuery 插件仿百度搜索框智能提示(带Value值)
- php+ajax+json 详解及实例代码
- c++关键字mutable深入解析
- 从源码分析Android的Volley库的工作流程
- mongodb监控工具mongostat的使用及命令详解
- thinkphp中U方法按路由规则生成url的方法
- Python实现购物车程序
- vue-cli 组件的导入与使用教程详解