清库脚本优化2.0

master
duhui 2021-06-24 15:32:11 +08:00
parent bc87a6ac99
commit 450cb96701
3 changed files with 67 additions and 13 deletions

View File

@ -129,8 +129,10 @@ public class ServerInfoController {
String register_state = request.getParameter("register_state"); String register_state = request.getParameter("register_state");
ServerInfo info = serverInfoDao.getServerinfo(server_id); ServerInfo info = serverInfoDao.getServerinfo(server_id);
// 未运营状态的服务器需要进行清库处理
if (info != null && "-2".equals(info.getStatus())){ if (info != null && "-2".equals(info.getStatus())){
delUser(info); ThreadPoolManager.getInstance().execute(() -> delUser(info));
} }
serverInfoDao.updateServerInfo(server_id, status, 0, isnew, name,register_state); serverInfoDao.updateServerInfo(server_id, status, 0, isnew, name,register_state);
@ -250,27 +252,35 @@ public class ServerInfoController {
* @param serverInfo * @param serverInfo
* @return * @return
*/ */
private int delUser(ServerInfo serverInfo){ private void delUser(ServerInfo serverInfo){
int wait = -1;
String path = "/data/jieling/deluser.sh"; String path = "/data/jieling/deluser.sh";
if (serverInfo.getIP() == null || "".equals(serverInfo.getIP()) if (serverInfo.getIP() == null || "".equals(serverInfo.getIP())
|| serverInfo.getServer_id() == null || "".equals(serverInfo.getServer_id()) || serverInfo.getServer_id() == null || "".equals(serverInfo.getServer_id())
|| serverInfo.getCoreName() == null || "".equals(serverInfo.getCoreName())){ || serverInfo.getCoreName() == null || "".equals(serverInfo.getCoreName())){
LOGGER.error("删除操作参数不全,执行失败:参数:{}",serverInfo.toString()); LOGGER.error("删除操作参数不全,执行失败:参数:{}",serverInfo.toString());
return wait; return;
} }
String command = "sh " + path + " 500 " + serverInfo.getIP() + " " + serverInfo.getServer_id() + " " + serverInfo.getCoreName(); String command = "sh " + path + " 500 " + serverInfo.getIP() + " " + serverInfo.getServer_id() + " " + serverInfo.getCoreName();
LOGGER.info("=================清库命令:{}",command);
Process exec = null;
try { try {
Process exec = Runtime.getRuntime().exec(command); exec = Runtime.getRuntime().exec(command);
LOGGER.info("========================== 停服脚本执行结果开始 ==========================="); LOGGER.info("========================== 停服脚本执行结果开始 ===========================");
// new DealProcessSream(exec.getInputStream()).start(); new DealProcessSream(exec.getInputStream(),true).start();
new DealProcessSream(exec.getErrorStream(),false).start();
LOGGER.info("=========================== 停服脚本执行结果结束 =========================="); LOGGER.info("=========================== 停服脚本执行结果结束 ==========================");
// exec.waitFor();
wait = 0; exec.waitFor();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} finally {
if (exec != null) {
exec.destroy();
}
} }
LOGGER.info("删除操作完成:命令:{}",command);
return wait;
} }
} }

View File

@ -14,8 +14,11 @@ import java.io.InputStreamReader;
public class DealProcessSream extends Thread { public class DealProcessSream extends Thread {
private InputStream inputStream; private InputStream inputStream;
public DealProcessSream(InputStream inputStream) { private boolean judge;
public DealProcessSream(InputStream inputStream, boolean judge) {
this.inputStream = inputStream; this.inputStream = inputStream;
this.judge = judge;
} }
@Override @Override
@ -28,8 +31,13 @@ public class DealProcessSream extends Thread {
br = new BufferedReader(inputStreamReader); br = new BufferedReader(inputStreamReader);
// 打印信息 // 打印信息
String line = null; String line = null;
while ((line = br.readLine()) != null) { if (judge){
System.out.println(line); while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
else {
while (br.readLine() != null);
} }
} catch (IOException ioe) { } catch (IOException ioe) {
ioe.printStackTrace(); ioe.printStackTrace();

View File

@ -0,0 +1,36 @@
package com.jmfy.utils;
import java.util.concurrent.*;
/**
* @Author hj
* @Date 2021/6/24 14:23
* @Description:
* @Version 1.0
*/
public class ThreadPoolManager {
private static ThreadPoolExecutor executor;
public static ThreadPoolExecutor getInstance() {
if (executor == null) {
synchronized (ThreadPoolManager.class) {
if (executor == null) {
executor = executorService();
}
}
}
return executor;
}
private static ThreadPoolExecutor executorService(){
return new ThreadPoolExecutor(1,//池中保持线程数
5,//最大线程数
10,//当线程数大于核心时,终止前多余空闲线程等待时间
TimeUnit.SECONDS,//时间单位为秒
new LinkedBlockingDeque<>(10),//池内队列最高10个线程
Executors.defaultThreadFactory(),//执行程序创建新线程使用默认工厂
new ThreadPoolExecutor.DiscardPolicy());//出现阻塞时使用处理程序
}
}