最好的执行系统命令的方法就是写个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"));
分享到:
相关推荐
另一个类`Shell.java`可能是用来封装命令执行逻辑的。例如,它可能包含一个方法,接收命令字符串或命令数组,然后使用`Runtime.exec`执行命令。这样的封装可以使代码更整洁,易于复用。 然而,执行shell脚本时,...
`Runtime.exec()`是最为传统且简单的执行外部程序的方法。它可以启动一个新的进程,并返回一个代表该进程的`Process`对象。但是,这种方法在处理进程的输入/输出流时存在一定的局限性。 **代码示例** ```java ...
Process process = Runtime.getRuntime().exec("su -c adb shell command"); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = ...
1. **使用Runtime类**:这是最基础的方法,通过`Runtime.getRuntime().exec()`方法执行shell命令。例如: ```java Process process = Runtime.getRuntime().exec("sh /sdcard/myscript.sh"); ``` 但是这种方法只能...
总结来说,Android应用通过`Runtime.getRuntime().exec()`方法可以实现与Linux内核的交互,执行各种shell命令,如`ls`、`echo`等。配合`adb shell`,开发者可以在开发和调试过程中方便地控制和检查Android设备的状态...
首先,Java通过`Runtime.getRuntime().exec()`方法来执行外部命令,包括Shell命令。这个方法接受一个字符串数组作为参数,其中第一个元素是Shell解释器的路径(通常是`/bin/sh`),第二个元素是`-c`,表示接下来的...
2. `sh filepath`: 在Java中,使用`Runtime.getRuntime().exec()`方法执行shell命令。这里的命令是`sh`,后面跟上shell脚本的路径,意味着执行这个脚本。 3. `Runtime.getRuntime().exec(exp)`执行shell命令。`...
2. **Runtime.exec()**:在Android应用程序中,可以通过Java的Runtime类的exec()方法来执行shell命令。例如: ```java Process process = Runtime.getRuntime().exec("ls /sdcard"); ``` 这将在设备上执行`ls /...
在Java中,我们可以通过`Runtime.getRuntime().exec()`方法来执行shell命令。例如,以下代码会赋予名为`test.sh`的脚本所有用户的执行权限: ```java String cmdstring = "chmod a+x test.sh"; Process proc = ...
1. `Runtime.getRuntime().exec()`: 这是最常用的方法,通过Runtime类的`exec()`方法可以执行shell命令。例如: ```java Process process = Runtime.getRuntime().exec("ls /sdcard"); ``` 上述代码会执行`ls /...
标题中的“java执行linux的SH文件”指的是在Java程序中调用Linux系统中的Shell脚本进行执行。这通常涉及到Java的Runtime类或者ProcessBuilder类,它们可以用来与操作系统进行交互,执行外部命令。 1. **Java运行...
Java代码执行shell命令的实现可以使用`Runtime.exec()`方法和`ProcessBuilder`方法两种方式。`Runtime.exec()`方法简单易用,但不能定制进程的参数和环境变量,而`ProcessBuilder`方法可以灵活地执行shell命令,并且...
我们可以使用`Runtime.getRuntime().exec()`方法来执行shell命令。例如,如果我们想在Linux环境下执行`ls`命令,可以这样做: ```java try { Process process = Runtime.getRuntime().exec("ls"); BufferedReader...
在Linux和Unix环境中,这些任务通常可以通过执行Shell命令来实现。本文将详细介绍如何在Java代码中调用Linux/Unix命令,以及相关的技术要点。 首先,Java提供了`Runtime`类和`ProcessBuilder`类来执行外部命令。`...
接下来,关于Java执行Shell脚本,你可以使用`Runtime.exec()`或`ProcessBuilder`,但是你需要确保你的脚本文件是可执行的,并且指定正确的路径。例如,执行一个名为`myscript.sh`的Shell脚本: ```java String ...
在Linux系统下,Java提供了通过`Runtime`类和`ProcessBuilder`类来执行系统命令的功能。本文将深入探讨如何在Java程序中执行Linux命令,并解决遇到的一些常见问题,特别是涉及通配符`*`的使用。 首先,让我们看一个...
Java通过Java Native Interface (JNI) 或者使用Runtime.exec() 方法可以与Linux系统进行交互,执行操作系统级别的命令。这种方式允许Java程序运行shell命令,如将一个文件转换成另一种格式。 2. **Apache POI**: ...
另外,虽然可以直接使用`Runtime.exec()`执行单条命令,但更推荐的方法是编写一个bat(Windows)或shell(Linux)脚本,将一系列命令封装在一起,然后通过Java执行这个脚本。这样可以更好地组织和管理复杂的命令序列...
在Android中执行Linux命令通常使用`Runtime.getRuntime().exec()`方法。以下是一个简单的示例: ```java private void execLinuxCommand(String cmd) { try { Process process = Runtime.getRuntime().exec("su")...
Java提供了两种主要的方式来调用外部程序,包括Shell脚本:`Runtime.getRuntime().exec()` 和 `ProcessBuilder`。`Runtime.exec()` 是较老的方法,而`ProcessBuilder`是Java 5引入的,提供了更灵活的参数设置和错误...