`
ynztpwl
  • 浏览: 59554 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Runtime.exec()执行linux shell

 
阅读更多

最好的执行系统命令的方法就是写个bat文件或是shell脚本。然后调用,那样修改和实现就简点多了。

现在执行外部命令,主要的方式,还是通过调用所在平台的SHELL去完成,WINDOWS下面就用CMD,LINUX或者是UNIX下面就用SHELL,下面演示一个LINUX下面用SHELL的调用,并把结果回显到控制台上,其它的应用程序类。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class RuntimeTest {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Process process;
		//String cmd = "ifconfig";//ok
		//String cmd = "sar -u 1 1| awk 'NR==4 {print $8}'";//空白。管道不支持
		String cmd = "/home/heyutao/workspace/ChunkOperator/sh/cpu.sh";//ok
		
		try {
			// 使用Runtime来执行command,生成Process对象
			Runtime runtime = Runtime.getRuntime();
			process = runtime.exec(cmd);
			// 取得命令结果的输出流
			InputStream is = process.getInputStream();
			// 用一个读输出流类去读
			InputStreamReader isr = new InputStreamReader(is);
			// 用缓冲器读行
			BufferedReader br = new BufferedReader(isr);
			String line = null;
			while ((line = br.readLine()) != null) {
				System.out.println(line);
			}
			is.close();
			isr.close();
			br.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

cpu.sh的内容:

#!/bin/sh
#top
cpu=$(sar -u 1 1| awk 'NR==4 {print $8}')
ip=$(ifconfig | grep -E 'inet addr|inet 地址'| grep -v '127.0.0.1' | awk -F ':' '{print $2}' | awk '{print $1}')
echo  "cpu:$ip:$cpu"


执行结果如下:

cpu:59.64.158.126:80.68


Sun的doc里其实说明还有其他的用法:
exec(String[] cmdarray, String[] envp, File dir)
Executes the specified command and arguments in a separate process with the specified environment and working directory.

那个dir就是调用的程序的工作目录,这句其实还是很有用的。

Windows下调用程序

Processproc=Runtime.getRuntime().exec("exefile");

Linux下调用程序就要改成下面的格式

Processproc=Runtime.getRuntime().exec("./exefile");

Windows下调用系统命令

String[]cmd={"cmd","/C","copy exe1 exe2"};
Processproc=Runtime.getRuntime().exec(cmd);

Linux下调用系统命令就要改成下面的格式

String[]cmd={"/bin/sh","-c","ln -s exe1 exe2"};
Processproc=Runtime.getRuntime().exec(cmd);

Windows下调用系统命令并弹出命令行窗口

String[]cmd={"cmd","/C","start copy exe1 exe2"};
Processproc=Runtime.getRuntime().exec(cmd);

Linux下调用系统命令并弹出终端窗口就要改成下面的格式

String[]cmd={"/bin/sh","-c","xterm -e ln -s exe1 exe2"};
Processproc=Runtime.getRuntime().exec(cmd);

还有要设置调用程序的工作目录就要

Processproc=Runtime.getRuntime().exec("exeflie",null,newFile("workpath"));


分享到:
评论

相关推荐

    使用runtime实现linux命令行或shell脚本多次调用

    另一个类`Shell.java`可能是用来封装命令执行逻辑的。例如,它可能包含一个方法,接收命令字符串或命令数组,然后使用`Runtime.exec`执行命令。这样的封装可以使代码更整洁,易于复用。 然而,执行shell脚本时,...

    java执行可执行文件,Runtime.exec、ProcessBuilder、commons-exec

    `Runtime.exec()`是最为传统且简单的执行外部程序的方法。它可以启动一个新的进程,并返回一个代表该进程的`Process`对象。但是,这种方法在处理进程的输入/输出流时存在一定的局限性。 **代码示例** ```java ...

    Android程序中(APK程序)执行Adb shell 命令

    Process process = Runtime.getRuntime().exec("su -c adb shell command"); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = ...

    android系统中调用shell脚本

    1. **使用Runtime类**:这是最基础的方法,通过`Runtime.getRuntime().exec()`方法执行shell命令。例如: ```java Process process = Runtime.getRuntime().exec("sh /sdcard/myscript.sh"); ``` 但是这种方法只能...

    安卓程序发送linux指令.zip

    总结来说,Android应用通过`Runtime.getRuntime().exec()`方法可以实现与Linux内核的交互,执行各种shell命令,如`ls`、`echo`等。配合`adb shell`,开发者可以在开发和调试过程中方便地控制和检查Android设备的状态...

    Java调用Shell命令的方法

    首先,Java通过`Runtime.getRuntime().exec()`方法来执行外部命令,包括Shell命令。这个方法接受一个字符串数组作为参数,其中第一个元素是Shell解释器的路径(通常是`/bin/sh`),第二个元素是`-c`,表示接下来的...

    linux下shell脚本实现数据的导出

    2. `sh filepath`: 在Java中,使用`Runtime.getRuntime().exec()`方法执行shell命令。这里的命令是`sh`,后面跟上shell脚本的路径,意味着执行这个脚本。 3. `Runtime.getRuntime().exec(exp)`执行shell命令。`...

    android执行shell命令

    2. **Runtime.exec()**:在Android应用程序中,可以通过Java的Runtime类的exec()方法来执行shell命令。例如: ```java Process process = Runtime.getRuntime().exec("ls /sdcard"); ``` 这将在设备上执行`ls /...

    Java调用linux shell脚本的方法

    在Java中,我们可以通过`Runtime.getRuntime().exec()`方法来执行shell命令。例如,以下代码会赋予名为`test.sh`的脚本所有用户的执行权限: ```java String cmdstring = "chmod a+x test.sh"; Process proc = ...

    Android中级篇之用JAVA代码执行shell命令.rar_Android 执行shell_android_effectoh

    1. `Runtime.getRuntime().exec()`: 这是最常用的方法,通过Runtime类的`exec()`方法可以执行shell命令。例如: ```java Process process = Runtime.getRuntime().exec("ls /sdcard"); ``` 上述代码会执行`ls /...

    java执行linux的SH文件

    标题中的“java执行linux的SH文件”指的是在Java程序中调用Linux系统中的Shell脚本进行执行。这通常涉及到Java的Runtime类或者ProcessBuilder类,它们可以用来与操作系统进行交互,执行外部命令。 1. **Java运行...

    Java代码执行shell命令的实现

    Java代码执行shell命令的实现可以使用`Runtime.exec()`方法和`ProcessBuilder`方法两种方式。`Runtime.exec()`方法简单易用,但不能定制进程的参数和环境变量,而`ProcessBuilder`方法可以灵活地执行shell命令,并且...

    java执行shell指令

    我们可以使用`Runtime.getRuntime().exec()`方法来执行shell命令。例如,如果我们想在Linux环境下执行`ls`命令,可以这样做: ```java try { Process process = Runtime.getRuntime().exec("ls"); BufferedReader...

    java代码中调用linux/unix命令

    在Linux和Unix环境中,这些任务通常可以通过执行Shell命令来实现。本文将详细介绍如何在Java代码中调用Linux/Unix命令,以及相关的技术要点。 首先,Java提供了`Runtime`类和`ProcessBuilder`类来执行外部命令。`...

    java_dos_shell_bat

    接下来,关于Java执行Shell脚本,你可以使用`Runtime.exec()`或`ProcessBuilder`,但是你需要确保你的脚本文件是可执行的,并且指定正确的路径。例如,执行一个名为`myscript.sh`的Shell脚本: ```java String ...

    在Linux系统下用java执行系统命令.doc

    在Linux系统下,Java提供了通过`Runtime`类和`ProcessBuilder`类来执行系统命令的功能。本文将深入探讨如何在Java程序中执行Linux命令,并解决遇到的一些常见问题,特别是涉及通配符`*`的使用。 首先,让我们看一个...

    JAVA实现Linux中word转换pdf

    Java通过Java Native Interface (JNI) 或者使用Runtime.exec() 方法可以与Linux系统进行交互,执行操作系统级别的命令。这种方式允许Java程序运行shell命令,如将一个文件转换成另一种格式。 2. **Apache POI**: ...

    java执行Linux命令的方法

    另外,虽然可以直接使用`Runtime.exec()`执行单条命令,但更推荐的方法是编写一个bat(Windows)或shell(Linux)脚本,将一系列命令封装在一起,然后通过Java执行这个脚本。这样可以更好地组织和管理复杂的命令序列...

    Android 程序执行Linux命令的解决方法及注意事项

    在Android中执行Linux命令通常使用`Runtime.getRuntime().exec()`方法。以下是一个简单的示例: ```java private void execLinuxCommand(String cmd) { try { Process process = Runtime.getRuntime().exec("su")...

    java调用shell脚本完美封装

    Java提供了两种主要的方式来调用外部程序,包括Shell脚本:`Runtime.getRuntime().exec()` 和 `ProcessBuilder`。`Runtime.exec()` 是较老的方法,而`ProcessBuilder`是Java 5引入的,提供了更灵活的参数设置和错误...

Global site tag (gtag.js) - Google Analytics