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