[toc]

1.用java代码执行linux命令#

用java代码执行Linux命令,并得到对应的返回值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class CMDUtils {
private String cmds;

public CMDUtils(String cmds) {
this.cmds = cmds;
}

public String getCmds() {
return cmds;
}

public void setCmds(String cmds) {
this.cmds = cmds;
}

public Object cmd(){
System.out.println("执行的命令是:"+this.cmds);
String[] cmd = new String[]{"/bin/sh", "-c", this.cmds};
Process process = null;
try {
process = Runtime.getRuntime().exec(cmd);

BufferedReader buffer = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuffer stringBuffer = new StringBuffer();
String line;
while ((line = buffer.readLine()) != null) {
stringBuffer.append(line).append("\n");
}
String result = stringBuffer.toString();
System.out.println("执行的结果是:=================================");
System.out.println(result);
return result;
} catch (IOException e) {
e.printStackTrace();
return null;
}

}
}

这样执行过命令后会返回对应的执行结果。测试代码如下:

1
2
3
4
5
6
7
8
9
10
public class MyTest {
public static void main(String args[]) {
System.out.println("hello world");
String cmds = "df -h";
CMDUtils cmdUtils = new CMDUtils(cmds);
String result = (String) cmdUtils.cmd();
System.out.println("我拿到的结果是:============================");
System.out.println(result);
}
}

测试结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[geneplus@OncoBox-19 quhaichuan]$ javac MyTest.java
[geneplus@OncoBox-19 quhaichuan]$ java MyTest
hello world
执行的命令是:df -h
执行的结果是:=================================
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 213G 144G 70G 68% /
devtmpfs 63G 0 63G 0% /dev
tmpfs 63G 76K 63G 1% /dev/shm
tmpfs 63G 3.1G 60G 5% /run
tmpfs 63G 0 63G 0% /sys/fs/cgroup
/dev/sda1 7.3T 2.3T 5.1T 31% /mnt/ONCOBOX
/dev/sdb1 2.0G 171M 1.9G 9% /boot
tmpfs 13G 36K 13G 1% /run/user/1001

我拿到的结果是:============================
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 213G 144G 70G 68% /
devtmpfs 63G 0 63G 0% /dev
tmpfs 63G 76K 63G 1% /dev/shm
tmpfs 63G 3.1G 60G 5% /run
tmpfs 63G 0 63G 0% /sys/fs/cgroup
/dev/sda1 7.3T 2.3T 5.1T 31% /mnt/ONCOBOX
/dev/sdb1 2.0G 171M 1.9G 9% /boot
tmpfs 13G 36K 13G 1% /run/user/1001

上面在linux环境下编译javac MyTest.java后,执行的结果可以看到如上。

参考博客