清库脚本优化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");
ServerInfo info = serverInfoDao.getServerinfo(server_id);
// 未运营状态的服务器需要进行清库处理
if (info != null && "-2".equals(info.getStatus())){
delUser(info);
ThreadPoolManager.getInstance().execute(() -> delUser(info));
}
serverInfoDao.updateServerInfo(server_id, status, 0, isnew, name,register_state);
@ -250,27 +252,35 @@ public class ServerInfoController {
* @param serverInfo
* @return
*/
private int delUser(ServerInfo serverInfo){
int wait = -1;
private void delUser(ServerInfo serverInfo){
String path = "/data/jieling/deluser.sh";
if (serverInfo.getIP() == null || "".equals(serverInfo.getIP())
|| serverInfo.getServer_id() == null || "".equals(serverInfo.getServer_id())
|| serverInfo.getCoreName() == null || "".equals(serverInfo.getCoreName())){
LOGGER.error("删除操作参数不全,执行失败:参数:{}",serverInfo.toString());
return wait;
return;
}
String command = "sh " + path + " 500 " + serverInfo.getIP() + " " + serverInfo.getServer_id() + " " + serverInfo.getCoreName();
LOGGER.info("=================清库命令:{}",command);
Process exec = null;
try {
Process exec = Runtime.getRuntime().exec(command);
exec = Runtime.getRuntime().exec(command);
LOGGER.info("========================== 停服脚本执行结果开始 ===========================");
// new DealProcessSream(exec.getInputStream()).start();
new DealProcessSream(exec.getInputStream(),true).start();
new DealProcessSream(exec.getErrorStream(),false).start();
LOGGER.info("=========================== 停服脚本执行结果结束 ==========================");
// exec.waitFor();
wait = 0;
exec.waitFor();
} catch (Exception e) {
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 {
private InputStream inputStream;
public DealProcessSream(InputStream inputStream) {
private boolean judge;
public DealProcessSream(InputStream inputStream, boolean judge) {
this.inputStream = inputStream;
this.judge = judge;
}
@Override
@ -28,9 +31,14 @@ public class DealProcessSream extends Thread {
br = new BufferedReader(inputStreamReader);
// 打印信息
String line = null;
if (judge){
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
else {
while (br.readLine() != null);
}
} catch (IOException ioe) {
ioe.printStackTrace();
}finally {

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());//出现阻塞时使用处理程序
}
}