导航:首页 > 编程语言 > java操作linux

java操作linux

发布时间:2023-11-12 02:56:22

A. 怎么用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("不支持本操作系统");
}

B. 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)执行简单的命令的方法:

代码如下:

C. 如何用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环境,所以没有实际测试,你自己试试吧

D. 如何在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命令

E. 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);
}
}
}

F. 在Java中如何操作linux命令行运行.sql文件

连接linux,
可以使用工具如filezilla ,x5等上传 你的sql文件到linux服务器上
登录mysql
复制代码代码如下:
>mysql -u root -p
>password:
注意,如果你之前建立了其他的mysql用户,可以选择合适的用户登录。
按照下面的三个步骤,快速导入这个sql文件

复制代码代码如下:
mysql>use yourdatabasename;
mysql>set names utf8;
mysql>source /tmp/database.sql;
然后屏幕上就会不断的滚,最后提示导入成功。
最后,记得将database.sql删除。

G. java中操作Linux的ganymed和Jsch各有什么特点

Java和Linux的理想关系是,一方面有一种可以在所有操作系统上运行的语言,另一方面操作系统可以根据需要进行各种计算。这种关系本身在过去,现在或者将来都可以实现,但现在目前Java并没有在Linux界唤起多大的兴趣,原因主要在于Java和Linux群体和技术在原则性和专业性上存在差异造成的。

原则性的差异涉及开放源码和免费软件这两个术语。Java既不开放也不免费,而Linux坚持这两个原则,至少在理论上是这样。此外,Java倡导者也必须明白,在Linux界存在着一个明显的分歧,大部分Linux人士都非常注重“free”这个词,虽然有些人是从经济上来了解这个词,但无论怎样他们都坚持开放源码的原则。尽管Linux有向各个阶层推广的趋势,但目前来说自由软件的积极倡导者主要来自世界各大学的学生和研究人员。他们对Linux的发展是非常关键的,为开发Linux和操作系统软件输送了大批的人才。

开放源码和Linux的商业价值取决于那些用Linux为市场开发产品的开发人员,以及喜欢根据自己需要用Linux对操作系统进行自定义的人们。如果必要,这些人会出钱购买Linux,因为它是一种开放的源码。他们对Linux的发展也是至关重要的,否则,Linux将只是一堆计算机课程和深奥的研究课题。

H. 怎样在linux下进行java编程

linux下java编程与在windows下一样,重点在于搭建java开发环境。
linux下搭建java开发环境步骤:
1、下载linux环境下的JDK,前往java官网下载:http://www.java.com/zh_CN/
举例:
JDK程序名为:jdk-7u11-linux-i586.tar.gz 保存路径:/home/wyl/tools-wyl/JDK7u11
eclipse程序名为:eclipse-jee-juno-SR1-linux-gtk.tar.gz 保存路径:/home/wyl/tools-wyl/eclipse-javaEE

2、解压下载的jdk-7u11-linux-i586.tar.gz文件

chmod 777 jdk-7u11-linux-i586.tar.gz
tar xzvf jdk-7u11-linux-i586.tar.gz(普通用户身份解压即可)
3、配置环境变量
以超级用户身份执行下面的命令:
#vim /etc/profile
在文件末尾加上以下内容后保存退出(:wq)
export JAVA_HOME=/home/wyl/tools-wyl/JDK7u11/jdk1.7.0_11(说明:这个是JDK解压后文件夹的路径)
export PATH=$JAVA_HOME/bin:$PATH或export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.
4、注销重新登录后在终端输入java,javac,java -version,javac -version.测试是否安装成功。
[wyl@localhost eclipse-javaEE]$ java -version
java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) Server VM (build 23.6-b04, mixed mode)
[wyl@localhost eclipse-javaEE]$ javac -version
javac 1.7.0_11
[wyl@localhost eclipse-javaEE]$
5、解压eclipse-jee-juno-SR1-linux-gtk.tar.gz 并运行它(chmod 777 eclipse...)
5.1、解压:tar xzvf eclipse-jee-juno-SR1-linux-gtk.tar.gz (普通用户身份解压即可,否则每次都要以超级用户身份运行它)。
5.2、运行:进入解压后的目录,执行命令:./eclipse即可运行eclipse.或者进入解压后的目录,双击eclipse图标即可。
运行eclipse即可进行java编程。

阅读全文

与java操作linux相关的资料

热点内容
nat地址访问外网服务器 浏览:966
怎样用java编译一个心形 浏览:934
如何使用python中的pygame 浏览:836
python实用小工具 浏览:24
怎么在安卓手机上去除马赛克 浏览:235
农行浓情通app怎么下载 浏览:533
怎么把原文件夹找回来 浏览:535
俄罗斯方块实现python思路 浏览:735
汉语拼音英语编译代码 浏览:501
程序员应具备的能力 浏览:606
手机石墨文档文件夹访问权限 浏览:656
客户端如何登陆域文件服务器 浏览:530
两位数的平方计算法 浏览:930
android图片分块 浏览:715
图形平移命令 浏览:962
聚类算法JAVA代码 浏览:407
网站图标素材压缩包 浏览:892
娱乐化app怎么做 浏览:638
加密货币行业前景如何 浏览:575
arm查询法的局限性和编译流程 浏览:81