Java调用linux shell脚本的方法_java

首先,我们需要增加用户对该脚本的执行权限,即

复制代码 代码如下:

 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()命令之前读掉输出缓冲区中的内容。

希望大家能够喜欢本文,有疑问请给我留言。

时间: 2024-08-30 08:52:50

Java调用linux shell脚本的方法_java的相关文章

Linux shell脚本中连接字符串的方法

 这篇文章主要介绍了Linux shell脚本中连接字符串的方法,大家参考使用吧 如果想要在变量后面添加一个字符,可以用一下方法:   代码如下: $value1=home $value2=${value1}"=" echo $value2     把要添加的字符串变量添加{},并且需要把$放到外面. 这样输出的结果是:home=,也就是说连接成功.   又如:     代码如下: [root@localhost sh]# var1=/etc/ [root@localhost sh]#

java调用本地shell文件,操作linux

问题描述 java调用本地shell文件,操作linux 怎么用java程序调用本地的shell文件去操作linux中的文件. 解决方案 Process process = Runtime.getRuntime().exec( ".//p.exe "); 解决方案二: Process process = Runtime.getRuntime().exec( " ");

怎样在java代码中调用执行shell脚本呀

问题描述 遇到个问题   在本地压缩服务器上的xml文件 我就想编写shell教本 脚本内容是链接服务器 找到待压缩文件 压缩文件  说实话 我不知道这样是否可行  试试  但我不知道怎样在java代码中 调用执行shell脚本  谁能指点指点  求教...  问题补充:首先谢谢各位朋友的回答  在补充个小问题 <br />能在调用shell脚本时 同时给shell脚本传参数吗  不止一个 能这样写吗     <br />Runtime.getRuntime().exec(&quo

面向 DBA 的 Linux Shell 脚本简介

http://www.itpub.net/showthread.php?s=&threadid=720028 面向 DBA 的 Linux Shell 脚本简介 7 年前,Oracle 发布了 Linux 上的第一个商业数据库.从那时起,Oracle.Red Hat 和 Novell/SUSE 就不断地合作更改 Linux 内核,从而提高数据库和应用程序的性能.正因为这样,用于 Linux 的 Oracle 数据库 10g 才包含了与操作系统紧密相关的许多增强功能.DBA 比以往任何时候更需要了

Linux Shell脚本系列教程(二):终端打印命令详解

  这篇文章主要介绍了Linux Shell脚本系列教程(二):终端打印命令详解,本文着重讲解了echo终端打印.printf终端打印两个打印出输出命令,需要的朋友可以参考下 终端打印 终端是交互式工具,用户可以通过它与shell环境进行交互.在终端中打印文本是大多数shell脚本和工具日常需要执行的基本任务.通过终端打印,人们可以知道系统的运行状态,这对用户来说是至关重要的. echo终端打印 代码如下: echo "Welcome to Bash" echo 'Welcome to

java-如何使用Java程序或shell脚本删除某目录下匹配文件名的文件.

问题描述 如何使用Java程序或shell脚本删除某目录下匹配文件名的文件. 如何使用Java程序或shell脚本删除某目录下匹配文件名的文件. 解决方案 Java的话,直接调用File的delete方法就可以了.比如你拿到了要删除文件的路径为path.代码如下 File file = new File(path); file.delete(); 解决方案二: 先判断file是目录还是文件,如果是文件就匹配文件名删除,是目录就遍历,继续判断目录或文件(递归) 解决方案三: 要使用shell脚本删

Linux shell脚本实现CPU预警_linux shell

如果CPU占用率持续达到80以上则调用打印java线程占用率堆栈的脚本,见https://github.com/oldratlee/useful-shells/blob/master/show-busy-java-threads.sh,具体用法见他的github wiki! #!/bin/bash #cpu idle percent cpu_idle=`top -b -d 1 -n 2 | grep Cpu | awk 'NR>1{print $5}' | cut -f 1 -d ".&q

python实现调用其他python脚本的方法_python

本文实例讲述了python实现调用其他python脚本的方法,分享给大家供大家参考.具体方法如下: 该实例调用当前目录下的md5get.py脚本.代码如下: import os import logging import subprocess log = logging.getLogger("Core.Analysis.Processing") INTERPRETER = "/usr/bin/python" if not os.path.exists(INTERPR

【转】Linux Shell脚本调试技术

本文转载自:https://www.ibm.com/developerworks/cn/linux/l-cn-shell-debug/ Shell脚本调试技术 本文全面系统地介绍了shell脚本调试技术,包括使用echo, tee, trap等命令输出关键信息,跟踪变量的值,在脚本中植入调试钩子,使用"-n"选项进行shell脚本的语法检查, 使用"-x"选项实现shell脚本逐条语句的跟踪,巧妙地利用shell的内置变量增强"-x"选项的输出信