导航:首页 > 编程语言 > java远程调用shell

java远程调用shell

发布时间:2023-11-29 06:30:43

❶ 如何在java程序中调用linux命令或者shell脚本

java程序是提供了这个一方法,Processpro=Runtime.getRuntime().exec(cmds);
但是一般来说,尽量去用一些其他脚本(lua,shell,python)去执行一系列linux命令比较灵活, 而且耗费资源少。但是Runtime.getRuntime().exec()这种调用方式在java虚拟机中是十分消耗资源的,即使命令可以很快的执行完毕,频繁的调用时创建进程消耗十分可观。
java虚拟机执行这个命令的过程是,首先克隆一条和当前虚拟机拥有一样环境变量的进程,再用这个新的进程执行外部命令,最后退出这个进程。频繁的创建对CPU和内存的消耗很大。


下面是一个调用linux命令的例子:

publicclassTest{
publicstaticvoidmain(String[]args)throwsException{
String[]cmds={"/bin/sh","-c","ps-ef|grepjava"};
Processpro=Runtime.getRuntime().exec(cmds);
pro.waitFor();//阻塞,直到上述命令执行完
InputStreamin=pro.getInputStream();
BufferedReaderread=newBufferedReader(newInputStreamReader(in));
Stringline=null;
while((line=read.readLine())!=null){
System.out.println(line);
}
}
}

注:参数中逗/bin/sh逗 逗-c逗 是可以用shell执行指定的命令的意思
这里/bin/sh -cps -ef|grep java,会执行ps linux命令

❷ java程序里调用linux命令

1.Java调用shell

Java语言以其跨平台性和简易性而着称,在Java里面的lang包里(java.lang.Runtime)提供了一个允许Java程序与该程序所运
行的环境交互的接口,这就是Runtime类,在Runtime类里提供了获取当前运行环境的接口。
其中的exec函数返回一个执行shell命令的子进程。exec函数的具体实现形式有以下几种:
public Process exec(String command) throws IOException
public Process exec(String command,String[] envp) throws
IOException
public Process exec(String command,String[] envp,File dir) throws
IOException
public Process exec(String[] cmdarray) throws IOException
public Process exec(String[] cmdarray, String[] envp) throws
IOException
public Process exec(String[] cmdarray, String[] envp,File dir)
throws IOException

我们在这里主要用到的是第一个和第四个函数,具体方法很简单,就是在exec函数中传递一个代表命令的字符串。exec函数返回的是一个Process类
型的类的实例。Process类主要用来控制进程,获取进程信息等作用。(具体信息及其用法请参看Java doc)。

1)执行简单的命令的方法:

代码如下:

❸ java调用shell脚本,并得到shell脚本的返回值

文件名确实不对
.sh文件才是linux下的批处理文件,它不认bat的
另外要保证.sh中调用的其他函数在当前目录下能正常运行

❹ Java调用linux的shell脚本不成功解决得分,该如何处理

代码是这样写的try {
String cmds= sh /usr/local/a.bat ;
Process child = Runtime.getRuntime().exec(cmds);} catch (IOException e) {
e.printStackTrace();}
a.bat 文件是在linux 下的一个批处理文件,里面两条语句,单独执行sh /usr/local/a.bat
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
a.bat 是XP 下的运行程序
------解决方案--------------------------------------------------------
我觉得有以下可能:
1、/usr/local/a.bat 文件没有被授予可执行权限,导致无法执行;
2、java 未能识别sh 命令,最好调用java.lang.Runtime.exec(String cmd, String[] envp)
方法,将sh 的上下文路径设置进去,估计就没有问题了。
------解决方案--------------------------------------------------------
纠正一下2 楼的说法,实际上只要文件中的内容是linux 命令或相应批处理命令,其文件名
------解决方案--------------------------------------------------------
从代码上分析,应该是环境变量的问题java 找不到sh 的执行路径

阅读全文

与java远程调用shell相关的资料

热点内容
解放战争pdf王树增 浏览:683
python压测app接口 浏览:951
抖音app怎么推荐 浏览:100
歌库服务器能做其他什么用途 浏览:95
安卓44虚拟机怎么root 浏览:38
程序员瘦身c盘空间 浏览:243
dell服务器温度怎么看 浏览:303
游戏服务器地址是什么 浏览:69
C语言经过编译之后的程序是 浏览:160
编程设计一个简易计算机界面 浏览:516
游戏压缩包损坏 浏览:485
压缩包图标下载 浏览:229
日本解压喜剧 浏览:38
芜湖程序员兼职如何接 浏览:368
句译app怎么用 浏览:342
vs2010编译c怎么用 浏览:104
摩拜单车没app怎么退款 浏览:469
苹果手机下载的app怎么变色了 浏览:903
韵母app怎么写 浏览:603
命令提示符是中文 浏览:167