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(); } }