generated from root/miduo_server
清库脚本优化2.0
parent
bc87a6ac99
commit
450cb96701
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,8 +31,13 @@ public class DealProcessSream extends Thread {
|
|||
br = new BufferedReader(inputStreamReader);
|
||||
// 打印信息
|
||||
String line = null;
|
||||
while ((line = br.readLine()) != null) {
|
||||
System.out.println(line);
|
||||
if (judge){
|
||||
while ((line = br.readLine()) != null) {
|
||||
System.out.println(line);
|
||||
}
|
||||
}
|
||||
else {
|
||||
while (br.readLine() != null);
|
||||
}
|
||||
} catch (IOException ioe) {
|
||||
ioe.printStackTrace();
|
||||
|
|
|
|||
|
|
@ -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());//出现阻塞时使用处理程序
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue