From ea39abaa9d77da9772165878c57bb8b4398fa121 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=A4=E5=85=A8=E6=98=86?= Date: Tue, 2 Sep 2025 14:50:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=A1=8C=E9=9D=A2=E9=95=9C=E5=83=8F?= =?UTF-8?q?=E5=88=B6=E4=BD=9C=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DeskImageController.java | 17 +++++--- .../torrent/util/ImageVirtualUtils.java | 40 ++++++++++++++++++- 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/torrent-be/src/main/java/com/unisinsight/torrent/controller/DeskImageController.java b/torrent-be/src/main/java/com/unisinsight/torrent/controller/DeskImageController.java index f66b62c..093a107 100644 --- a/torrent-be/src/main/java/com/unisinsight/torrent/controller/DeskImageController.java +++ b/torrent-be/src/main/java/com/unisinsight/torrent/controller/DeskImageController.java @@ -10,6 +10,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.util.Map; + @RestController @Slf4j @RequestMapping("/vdi") @@ -19,7 +21,7 @@ public class DeskImageController { @GetMapping("/desk-image") @ApiOperation(value = "制作桌面镜像") public boolean start(@RequestParam("srcFile") String srcFile, - @RequestParam("detFile") String detFile, + @RequestParam("detFile") String detFile, @RequestParam("name") String name, @RequestParam("detFile") String type) { System.out.println("制作桌面镜像"); @@ -30,10 +32,15 @@ public class DeskImageController { @GetMapping("/progress") @ApiOperation(value = "制作桌面镜像") - public Double start(@RequestParam("pid") String pid) { + public Double start(@RequestParam("name") String name) { System.out.println("查询进度"); - ImageVirtualUtils.progress(pid); - return null; - + Map resultMap = ImageVirtualUtils.progress(name); + if(resultMap.get("process")!=null && (Double)resultMap.get("process") == 100){ + String pid = (String) resultMap.get("pid"); + ImageVirtualUtils.killProgress(pid); + return 100.0; + } else { + return (Double) resultMap.get("process"); + } } } diff --git a/torrent-be/src/main/java/com/unisinsight/torrent/util/ImageVirtualUtils.java b/torrent-be/src/main/java/com/unisinsight/torrent/util/ImageVirtualUtils.java index ed92468..7a0d393 100644 --- a/torrent-be/src/main/java/com/unisinsight/torrent/util/ImageVirtualUtils.java +++ b/torrent-be/src/main/java/com/unisinsight/torrent/util/ImageVirtualUtils.java @@ -16,7 +16,8 @@ import java.util.Map; public class ImageVirtualUtils { private static final String BT_SCRIPT_PATH = "/var/lib/vdi/nodejs/convert_image.sh"; - private static final String JSON_PATH = "/var/lib/vdi/nodejs/json/"; +// private static final String JSON_PATH = "/var/lib/vdi/nodejs/json/"; + private static final String JSON_PATH = "D:\\code\\"; private static final Long WAIT_START_TIME = 8000L; @@ -102,4 +103,41 @@ public class ImageVirtualUtils { return null; } } + + public static boolean killProgress(String pid){ + try { + // 验证PID参数 + if (pid == null || pid.trim().isEmpty()) { + System.err.println("PID不能为空"); + return false; + } + + // 构造kill命令 + ProcessBuilder pb = new ProcessBuilder("kill", "-9", pid); + + // 启动进程 + Process process = pb.start(); + + // 等待命令执行完成 + int exitCode = process.waitFor(); + + // exitCode为0表示命令执行成功 + if (exitCode == 0) { + System.out.println("成功杀掉进程 PID: " + pid); + return true; + } else { + System.err.println("杀掉进程失败 PID: " + pid + ", 退出码: " + exitCode); + return false; + } + } catch (Exception e) { + e.printStackTrace(); + System.err.println("杀掉进程时发生异常 PID: " + pid); + return false; + } + + } + + public static void main(String[] args) { + Map map = progress("test.json"); + } }