Java程序,在Linux中执行定义的命令,执行命令
/**
* Linux语句输入
* dongxinji
* 2022年9月28日
*
* @throws IOException
*/
public void linuxState(String fileName) {
log.info("linuxState fileName*********" + fileName);
String name = fileName.substring(0, fileName.length() - 3);//文件名,无后缀
List<String> commands = new ArrayList<>();
// commands.add("pwd");
commands.add("cd" + path);
// 执行shell脚本,必备sh命令
commands.add("nohup sh " + name + ".sh > " + logPath + name + ".log &");
// commands.add("sh ./test.sh");
executeOneMore(commands);//调用执行语句
}
/**
* linux下执行语句
* dongxinji
* 2022年9月28日
*
* @throws IOException
*/
public static void executeOneMore(List<String> commands) {
Runtime run = Runtime.getRuntime();
try {
Process proc = run.exec("/bin/bash", null, null);
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true);
for (String line : commands) {
log.info("linux执行语句*********" + line);
out.println(line);
}
out.println("\r\n");
out.println("exit");// 结束命令
String rspLine = "";
while ((rspLine = in.readLine()) != null) {
log.info("rspLine***********" + rspLine);
}
proc.waitFor();
in.close();
out.close();
proc.destroy();
} catch (Exception e1) {
e1.printStackTrace();
}
}