导航:首页 > 编程语言 > 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相关的资料

热点内容
单片机玻璃管加热研究成果 浏览:756
财产pdf 浏览:791
java添加图标 浏览:886
命令与征服4任务攻略 浏览:97
算法和逻辑程序验证 浏览:767
用户管理系统php模板 浏览:419
中国银行app账号怎么登录 浏览:867
安卓手机icloud云服务器地址 浏览:801
加密门禁如何写到小米手机 浏览:169
java静态方法的多线程 浏览:265
CAXAXp下载打不开要加密 浏览:244
开锁pdf 浏览:89
python可视化奶茶 浏览:226
命令方字幕 浏览:592
苹果手机如何连接ipad服务器 浏览:981
打印矩阵java 浏览:401
如何双开一个不能双开的app 浏览:536
抖音喜欢加密了怎么打开 浏览:393
mysql命令行显示表 浏览:365
国防离我们源码200字 浏览:785