package com.xncoding.pos.utils; import com.xncoding.pos.config.ShellProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.InputStreamReader; import java.io.LineNumberReader; public class RunShellUtils { private static final Logger logger = LoggerFactory.getLogger(RunShellUtils.class); private static ShellProperties shellProperties; public RunShellUtils(){ if (shellProperties == null){ shellProperties = (ShellProperties)ApplicationContextUtils.getBean("shellProperties"); } } /** * 执行shell * @return 默认执行成功 true 执行成功 false 执行失败 */ public boolean runShell(){ //默认执行成功 boolean b = true; if (shellProperties.isRunShell()) { try { // 1、重启脚本执行 exec(shellProperties.getUrl()); logger.info("重启脚本执行成功!"); // // 2、执行启动脚本 // exec(shellProperties.getRunUrl()); // logger.info("启动脚本执行成功!"); }catch (Exception e){ logger.error("脚本执行失败!"); b = false; e.printStackTrace(); } } return b; } private void rumShell(String url) throws Exception { Process ps = Runtime.getRuntime().exec(url); ps.waitFor(); } private void exec(String cmd) { try { logger.info("cmd:{}",cmd); String[] cmdA = { "/bin/sh", "-c", cmd }; Process process = Runtime.getRuntime().exec(cmdA); LineNumberReader br = new LineNumberReader(new InputStreamReader( process.getInputStream())); StringBuffer sb = new StringBuffer(); String line; while ((line = br.readLine()) != null) { logger.info(line); sb.append(line).append("\n"); } } catch (Exception e) { e.printStackTrace(); } } }