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

作者&投稿:淡梵 (若有异议请与网页底部的电邮联系)
如何用Java写代码连上Linux主机去在主机上执行命令~

其实不难,给你思路如下:
第一,你需要在远程Linux主机上面装好一个接收端程序,这个程序可以是java写的,也可以是C语言写的,都无所谓,因为网络接口是一样的,都是socket。
如果你要用java写,那需要在Linux上面把jdk装上,推荐你用C写,更容易操作linux执行cmd命令.
假设从主机A,检查主机B上的进程,
需要在主机B上建立检查用户,例如叫x,
并设置通过public key认证登录SSH,不会可以google搜一下,
然后,在A机器上执行:
ssh x@B ~/command.sh > result.txt
command.sh就是B机器上放置在x目录下的脚本。
输出结果应该是写到了result.txt
或者另一种写法
result=`ssh x@B ~/command.sh`
结果直接保存到result变量中了。
暂时没有linux环境,所以没有实际测试,你自己试试吧

1.Java调用shellJava语言以其跨平台性和简易性而著称,在Java里面的lang包里(java.lang.Runtime)提供了一个允许Java程序与该程序所运行的环境交互的接口,这就是Runtime类,在Runtime类里提供了获取当前运行环境的接口。其中的exec函数返回一个执行shell命令的子进程。exec函数的具体实现形式有以下几种:public Process exec(String command) throws IOExceptionpublic Process exec(String command,String[] envp) throwsIOExceptionpublic Process exec(String command,String[] envp,File dir) throwsIOExceptionpublic Process exec(String[] cmdarray) throws IOExceptionpublic Process exec(String[] cmdarray, String[] envp) throwsIOExceptionpublic Process exec(String[] cmdarray, String[] envp,File dir)throws IOException我们在这里主要用到的是第一个和第四个函数,具体方法很简单,就是在exec函数中传递一个代表命令的字符串。exec函数返回的是一个Process类型的类的实例。Process类主要用来控制进程,获取进程信息等作用。(具体信息及其用法请参看Java doc)。
1)执行简单的命令的方法:
代码如下:

上面的代码首先是声明了一个代表命令的字符串commands,它代表了ls -l这个命令。之后我们用Runtime.getRuntime().exec(commands)来生成一个子进程来执行这个命令,如果这句话运行成功,则命令 ls -l 运行成功(由于没有让它显示,不会显示ls -l的结果)。后面的流操作则是获取进程的流信息,并把它们一行行输出到屏幕。2)执行带有参数的命令(尤其是参数需要用引号的)时则需要用String的数组来表示整个命令,而且要用转义符把引号的特殊含义去除,例如我们要执行find / -name "*mysql*" -print 时,用如下代码

Java 可以通过 Runtime 调用Linux命令,形式如下:
Runtime.getRuntime().exec(command)
但是这样执行时没有任何输出,因为调用 Runtime.exec 方法将产生一个本地的进程,并返回一个Process子类的实例(注意:Runtime.getRuntime().exec(command)返回的是一个Process类的实例)该实例可用于控制进程或取得进程的相关信息。
由于调用 Runtime.exec 方法所创建的子进程没有自己的终端或控制台,因此该子进程的标准IO(如stdin,stdou,stderr)都通过 Process.getOutputStream(),Process.getInputStream(), Process.getErrorStream() 方法重定向给它的父进程了。
用户需要用这些stream来向子进程输入数据或获取子进程的输出,下面的代码可以取到 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);
}
}
}

执行linux命令基,基本思路是从控制台获得输入的指令,启动命令行执行命令,捕捉异常,示例如下:
public class TestRunTime {

public static void main(String[] args) throws IOException, InterruptedException {
String cmd = "";

if(args == null || args.length == 0){
System.out.println("请输入命令行参数");
}else{

for(int i=0;i<args.length; i++){//获得输入的命令
cmd += args[i] + " ";
}
}

try {
Process process = Runtime.getRuntime().exec(cmd);//执行命令

InputStreamReader ir = new InputStreamReader(process.getInputStream());
LineNumberReader input = new LineNumberReader(ir);

String line;
while ((line = input.readLine()) != null) {//输出结果
System.out.println(line);
}
} catch (java.io.IOException e) {
System.err.println("IOException " + e.getMessage());//捕捉异常
}
}
}

如何用java程序打开linux终端,然后在其中执行命令?
答:linux终端下运行Java程序,需要安装JDK。这里先介绍如何安装JDK,然后介绍如何安装Java程序。首先,打开终端,快捷键ctrl+alt+t;安装JDK,sudo apt-get install openjdk-7-jdk( 注意,这里需要输入密码);切换到java程序所在的目录;编译以.java结尾的程序,可以使用javac *.java编译当前目录下所有的java...

Linux java|环境变量 如何安装Linux软件
答:1、首先是安装java 2、然后用vi编辑器打开profile文件vi /etc/profile将下面的内容添加到/etc/profile文件的最后 3、source在/etc/profile里面增加环境变量 4、如果不用/etc/profile使配置文件生效,则配置文件是不会生效的

如何将JAVA工程部署到Linux系统服务器上?具体步骤是什么!
答:1. linux服务器上装上jdk 2. 将java程序上传到服务器 3. 编写shell脚本执行java程序。4.运行shell脚本。ok

Linuxjdk路径linuxjdk路径
答:4、打开x-shell,连接到linux系统 5、JDK一般安装到/usr目录下。输入命令:cd/usr/输入命令:mkdirjava新建一个文件夹,用作Java的安装目录。6、将下载好的jdk文件上传至/usr/java下 7、使用tar-zxvf进行解压,解压缩文件包 9、解压完毕后,需要编辑配置文件,使用vi/etc/profile命令 如何在eclipse的...

怎样在虚拟机的linux系统上安装java和tomcat 程序
答:JAVA_HOME=/home/jdk PATH=$PATH;/home/jdk/bin CLASSPATH=.;/home/jdk/lib/rt.jar CATALINA_HOME=/home/tomcat export JAVA_HOME PATH CLASSPATH CATALINA_HOME 七、遇到问题 在linux下安装好tomcat启动时报如下错误:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At ...

.Linux 环境Java 开发平台的安装、配置与应用 安装配置JDK for Linux...
答:系统centos 下载软件 jdk-6u20-ea-bin-b02-linux-i586-01_apr_2010.bin 设置JDK环境 chmod a+x jdk-6u20-ea-bin-b02-linux-i586-01_apr_2010.bin ./jdk-6u20-ea-bin-b02-linux-i586-01_apr_2010.bin yes 完成解压,设置环境变量:vi /etc/profile export JAVA_HOME=/usr/local/jdk1.6....

Linux中JDK的安装和配置方法
答:4、输入ifconfig查看自己的ip地址,然后就可以利用xshell连接linux系统了。5、打开xshell,然后输入ip地址,用户名,密码,进行连接。6、输入cd Desktop/进入桌面,然后输入ll查看当前目录下面有哪些文件或者文件夹,我们可以看到上传的文件。7、然后创建文件夹,利用命令mkdir -p /usr/local/java创建文件夹...

java调用linux命令行
答:java怎么调用linux命令行呢?下面是java调用linux命令行的具体方法介绍:java调用linux命令行有两种调用方式。一种是直接调用linux命令,二是将linux命令写到.sh脚本中,调用脚本执行。1、直接调用:使用java中lang包下面的Runtime类和Process类,其中Runtime类中的Runtime.getRuntime().exec(linux command)...

如何在Ubuntu Linux上安装Oracle Java
答:1、打开终端运行以下命令,检查你的Ubuntu Linux操作系统是32位的还是64位的。输入/复制/粘贴: file /sbin/init 注意,它将显示的Ubuntu Linux操作系统架构位版本将是32位或64位。2、检查你的系统上是否已安装Java。要检查该项,你需要在终端上运行Java版本命令。打开终端并输入以下命令:输入/复制/...

java程序里调用linux命令
答:Java 可以通过 Runtime 调用Linux命令,形式如下:Runtime.getRuntime().exec(command)但是这样执行时没有任何输出,因为调用 Runtime.exec 方法将产生一个本地的进程,并返回一个Process子类的实例(注意:Runtime.getRuntime().exec(command)返回的是一个Process类的实例)该实例可用于控制进程或取得...