java执⾏多条linux命令_⼯具类:在Java程序中执⾏Linux命令CommandUtil.java
package com.lanying.util;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import urrent.TimeUnit;
public class CommandUtil {
/**
* 在指定路径下执⾏⼀条命令,不能执⾏cd之类的命令
*
* @param command 要执⾏的Linux命令
* @param dir ⽬标路径,在该路径执⾏上述Linux命令
* @return 命令执⾏后显⽰的结果
* @throws IOException
*/
public static String run(String command, File dir) throws IOException {
Scanner input = null;
StringBuilder result = new StringBuilder(command + "\n"); // 加上命令本⾝
Process process = null;
try {
process = Runtime().exec(command, null, dir);
try {
//等待命令执⾏完成
process.waitFor(10, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
InputStream is = InputStream();
input = new Scanner(is);
while (input.hasNextLine()) {
result.Line() + "\n");
}
} finally {
if (input != null) {
input.close();
}
if (process != null) {
process.destroy();
}
}
String();
}
/
**
* 在指定路径下,开启脚本,可以执⾏多条命令
*
* @param command 要执⾏的Linux命令
* @param dir ⽬标路径,在该路径执⾏上述Linux命令
* @return 所有命令执⾏后显⽰的结果
* @throws IOException
*/
public static List run(String[] command, File dir) throws IOException {
BufferedReader in = null;
PrintWriter out = null;
List resultList = new ArrayList();
Process process = null;
try {
// 开启脚本是为了能够获取所有的返回结果
process = Runtime().exec("/bin/sh", null, dir); // /bin/sh开启shell脚本
in = new BufferedReader(new InputStream()));
out = new PrintWriter(new BufferedWriter(new OutputStream())), true); for (String cmd : command) {
out.println(cmd); // ⼀条条执⾏命令
}
out.println("exit"); // 表⽰脚本结束,必须执⾏,否则in流不结束。
try {
// 等待命令执⾏完成
process.waitFor(10, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 装填返回结果,⽐如ls命令执⾏后显⽰的⼀⾏⾏字符串
String line = "";
while ((line = in.readLine()) != null) {
resultList.add(line);
}
resultList.add(0, String(command)); // 加上命令本⾝,可根据需要⾃⾏取舍} finally {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
if (process != null) {
process.destroy();
}
}
return resultList;
}
}
JUnitRuntimeExec.java
package com.lanying.demo;
import com.lanying.util.CommandUtil;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class JUnitRuntimeExec {
@Test
public void testCMD(){
File dir = new File("/lanying");
try {
String res = CommandUtil.run("ls -l",dir);
System.out.println(res);
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void testCMDList(){
// 在该⽬录下执⾏命令
File dir = new File("/lanying");
List cmdList = new ArrayList<>();
cmdList.add("ls -lrt");
cmdList.add("ls -lrt");
try {
// 执⾏命令
List res = CommandUtil.Array(new String[cmdList.size()]),dir); // 遍历结果
res.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
}
}
执⾏效果:
Java程序执⾏单条Linux命令效果图.png
linux循环执行命令脚本Java程序执⾏多条Linux命令效果图.png 参考资料:
希望与⼴⼤⽹友互动??
点此进⾏留⾔吧!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。