导航:首页 > 程序命令 > java调用linux系统命令

java调用linux系统命令

发布时间:2023-05-17 00:03:16

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

//实现远程连接Connectionconn=newConnection(scpAddr,Integer.parseInt(scpPort));conn.connect();//连接logger.debug("登陆远迟宴程服务器:"+scpUserName+","+scpPassword);//登陆远程服务器的用户名密码booleanisAuthed=conn.authenticateWithPassword(scpUserName,scpPassword);//登陆失败if(!isAuthed){logger.debug("登陆远程服务器失败");returnfalse;}SessionsshSession=conn.openSession();logger.debug("cd/搭念&&rm-f"知旦困+file+"&&pwd");//linux命令sshSession.execCommand("cd/&&rm-f"+file+"&&pwd");//执行sshSession.close();conn.close();

㈡ 如何在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的命令怎么输入一条命令让linux用终端运行,然后获得返回的文本

用java的process类了。
process这个类是一个抽象类,封装了一个进程(你在调用linux的命令或者shell脚本就是为了执行一个在linux下执行的程序,所以应该使用process类)。
process类提供了执行从进程输入,执行输出到进程,等待进程完成,检查进程的推出状态,以及shut down掉进程。

㈣ 如何用java调用linux shell命令

**
* 运行shell脚本
* @param shell 需要运行的shell脚本
*/
public static void execShell(String shell){
try {
Runtime rt = Runtime.getRuntime();
rt.exec(shell);
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 运行shell
*
* @param shStr
* 需要执行的shell
* @return
* @throws IOException
*/
public static List runShell(String shStr) throws Exception {
List<String> strList = new ArrayList();

Process process;
process = Runtime.getRuntime().exec(new String[]{"/bin/sh","-c",shStr},null,null);
InputStreamReader ir = new InputStreamReader(process
.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line;
process.waitFor();
while ((line = input.readLine()) != null){
strList.add(line);
}

return strList;
}

㈤ java如何连接linux系统后台执行相应的命令

java提供的Runtime 这个类来执行系统命令的,用法如下:

1.得到Runtime对象。
public void execCommand(String command) throws IOException {
// start the ls command running
//String[] args = new String[]{"sh", "-c", command};
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(command); //这句话就是shell与高级语言间的调用
//如果有参数的话可以用另外一个被重载的exec方法
//实际上这样执行时启动了一个子进程,它没有父进程的控制台
//也就看不到输出,所以需要用输出流来得到shell执行后的输出

2.得到输入流。
InputStream inputstream = proc.getInputStream();
InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
// read the ls output
String line = "";
StringBuilder sb = new StringBuilder(line);
while ((line = bufferedreader.readLine()) != null) {
//System.out.println(line);
sb.append(line);
sb.append('\n');
}
//tv.setText(sb.toString());
//使用exec执行不会等执行成功以后才返回,它会立即返回
//所以在某些情况下是很要命的(比如复制文件的时候)
//使用wairFor()可以等待命令执行完成以后才返回
try {
if (proc.waitFor() != 0) {
System.err.println("exit value = " + proc.exitValue());
}
}
catch (InterruptedException e) {
System.err.println(e);
}
}
}

㈥ java调用linux命令切换目录

.
pwd命令 pwd命令用于显示用户当前所处的工作目录,格式为“pwd [选项]”。
2.
cd命令 cd命令用于切换或戚工作路径,格式为“cd [目隐纳录名称]”。 这个命令应该是最常用的一个Linux命令了。可以通过cd命令迅衫携陵速、灵活地切换到不同的工作目录。除了

㈦ 怎么用java代码运行linux命令

以下方法支持Linux和windows两个系统的命令行调用。还用到了apache的lang工具包commons-lang3-3.1.jar来判断操作系统类型、也用到了和log4j-1.2.16.jar来打印日志。至于rm -rf 是否能成功删除文件,可以手动去调用命令行试试。

privateStringcallCmd(Stringcmd)throwsInterruptedException,UnHandledOSException,ExecuteException{
if(SystemUtils.IS_OS_LINUX){
try{
//使用Runtime来执行command,生成Process对象
Processprocess=Runtime.getRuntime().exec(
newString[]{"/bin/sh","-c",cmd});
intexitCode=process.waitFor();
//取得命令结果的输出流
InputStreamis=process.getInputStream();
//用一个读输出流类去读
InputStreamReaderisr=newInputStreamReader(is);
//用缓冲器读行
BufferedReaderbr=newBufferedReader(isr);
Stringline=null;
StringBuildersb=newStringBuilder();
while((line=br.readLine())!=null){
System.out.println(line);
sb.append(line);
}
is.close();
isr.close();
br.close();
returnsb.toString();
}catch(java.lang.NullPointerExceptione){
System.err.println("NullPointerException"+e.getMessage());
logger.error(cmd);
}catch(java.io.IOExceptione){
System.err.println("IOException"+e.getMessage());
}
thrownewExecuteException(cmd+"执行出错!");
}

if(SystemUtils.IS_OS_WINDOWS){
Processprocess;
try{
//process=newProcessBuilder(cmd).start();
String[]param_array=cmd.split("[\s]+");
ProcessBuilderpb=newProcessBuilder(param_array);
process=pb.start();
/*process=Runtime.getRuntime().exec(cmd);*/
intexitCode=process.waitFor();
InputStreamis=process.getInputStream();
InputStreamReaderisr=newInputStreamReader(is);
BufferedReaderbr=newBufferedReader(isr);
Stringline;
StringBuildersb=newStringBuilder();

while((line=br.readLine())!=null){
System.out.println(line);
sb.append(line);
}
is.close();
isr.close();
br.close();
returnsb.toString();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
thrownewExecuteException(cmd+"执行出错!");
}

thrownewUnHandledOSException("不支持本操作系统");
}

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

public static String execShell(String shellString){
System.out.println("将要执行的shell语句是: "+shellString);
String isOK="ok";
try{
Process process=Runtime.getRuntime().exec(shellString);

BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line="";
while((line = input.readLine()) != null){
System.out.println(line);
}
input.close();
int exitValue=process.waitFor();
if(0!=exitValue){
isOK="no";
System.err.println("call shell failed.errorcodeis:"+exitValue);
}
}catch(Throwable e){
e.printStackTrace();
}

return isOK;
}

这是我在java中用过的一个调用shell的函数,你可以试试;执行成功返回ok,执行失败返回no

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

在java程序中如何调用linux的命令?如裤棚渣何调用shell脚本呢?

这里不得不提到java的process类了。

process这个类是一个抽象类,封装了一个进程(你在调用linux的命令或者shell脚本就是为了执行一个在linux下执行的程序,所以应该使用process类)。

process类提供了执行从进程输入,执行输出到进程,等待进程完成,检查进程的推出状态,以及shut down掉进程。

至于详细的process类的介绍放在以后介绍。

另外还要注意一个类:Runtime类,Runtime类是一个与JVM运行时环境有关的类,这个类是Singleton的。

这里用到的Runtime.getRuntime()方法是取得当前JVM的运行环境,也是java中唯一可以得到运行环境的和做方法。(另外,Runtime的大部分方法都是实例方法,也就是说每次运行调用的时候都需要调用到getRuntime方法)

下面说说Runtime的exec()方法,这里要注意的有一点,就是public Process exec(String [] cmdArray, String [] envp);这个方法中cmdArray是一个执行的命令和参数的字符串数组,数组的第一个元素是要执行的命令往后依次都是命令的参数,envp感觉应该和C中的execve中的环境变量是一样的,envp中使用的是name=value的方式。

下面说一下,如何使用process来调用shell脚本

例如,我需要在linux下实行linux命令:sh test.sh,下面就是执行test.sh命令的方法:

这个var参数就是日期这个201102包的名字。

String shpath="/test/test.sh"; //程序路径

Process process =null;

String command1 = “chmod 777 ” + shpath;
process = Runtime.getRuntime().exec(command1);
process.waitFor();

String var="201102"; //参数

String command2 = “胡悄/bin/sh ” + shpath + ” ” + var;
Runtime.getRuntime().exec(command2).waitFor();

㈩ java程序里如何调用linux命令

Java可以通过Runtime调用Linux命令御逗咐,形式如下:

  1. Runtime.getRuntime().exec(command)

    但是这样执行时没有任何输出,因为调用Runtime.exec方法将产生一个本地的进程,并返回一个Process子类的实例(注意:Runtime.getRuntime().exec(command)返指宽回的是一个Process类的实例)该实例可用于控制进程或取得进程的相关信息。

  2. 由于调用Runtime.exec方法所创建的子进程没有自己的终端或控制台,因此该子进程的标准IO(如stdin,stdou,stderr)都通过Process.getOutputStream(),Process.getInputStream(),Process.getErrorStream()方法重定向给它的父进程了。

  3. 用户需要用这些stream来向子进程输入数据或获取子进程的输出,下面的代码可以取到linux命令的执行结果:

    try{

    String[]cmd=newString[]{”镇纯/bin/sh”,“-c”,”ls“};

    Processps=Runtime.getRuntime().exec(cmd);

    BufferedReaderbr=newBufferedReader(newInputStreamReader(ps.getInputStream()));

    StringBuffersb=newStringBuffer();

    Stringline;

    while((line=br.readLine())!=null){

    sb.append(line).append(” ”);

    }

    Stringresult=sb.toString();

    System.out.println(result);

    }catch(Exceptione){

    e.printStackTrace();

    }

阅读全文

与java调用linux系统命令相关的资料

热点内容
抖音直播云服务器 浏览:627
一加7pro文件夹data 浏览:424
程序员淋雨 浏览:947
python输出数字序列中的空格 浏览:78
怎么将pdf文件大小 浏览:734
氧原子相对分子量算法 浏览:988
加密机为什么是安全的 浏览:451
单片机拼音输入法 浏览:789
苹果笔记本t2加密芯片怎么打开 浏览:796
安卓如何把手机投屏至电视 浏览:739
方舟编译器现在可提速哪些软件 浏览:60
微信加密为什么是黑屏 浏览:473
android去电状态 浏览:604
苹果13如何加密视频 浏览:815
linuxweblogic缓存 浏览:69
云服务器不同地域 浏览:946
python闹钟怎么打 浏览:686
虚拟主机服务器有什么区别 浏览:833
算法与程序的奥秘章节检测 浏览:379
找pdf 浏览:531