From dd1d93e0964e4a1388a10b9404b70640db95c147 Mon Sep 17 00:00:00 2001 From: CityFun <31820853+zhengkunwang223@users.noreply.github.com> Date: Thu, 19 Jun 2025 15:06:59 +0800 Subject: [PATCH] fix: fix issue with docker cmd not close (#9182) --- agent/app/service/container.go | 8 ++++++++ frontend/src/components/status/index.vue | 8 ++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/agent/app/service/container.go b/agent/app/service/container.go index dbc489478..803ba185b 100644 --- a/agent/app/service/container.go +++ b/agent/app/service/container.go @@ -933,6 +933,7 @@ func collectLogs(done <-chan struct{}, params dto.StreamLog, messageChan chan<- } dockerCmd := exec.Command("docker", cmdArgs...) + dockerCmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} stdout, err := dockerCmd.StdoutPipe() if err != nil { @@ -949,7 +950,11 @@ func collectLogs(done <-chan struct{}, params dto.StreamLog, messageChan chan<- defer func() { if dockerCmd.Process != nil { + if pgid, err := syscall.Getpgid(dockerCmd.Process.Pid); err == nil { + _ = syscall.Kill(-pgid, syscall.SIGKILL) + } _ = dockerCmd.Process.Kill() + _ = dockerCmd.Wait() } }() @@ -960,6 +965,9 @@ func collectLogs(done <-chan struct{}, params dto.StreamLog, messageChan chan<- <-done if !processKilled && dockerCmd.Process != nil { processKilled = true + if pgid, err := syscall.Getpgid(dockerCmd.Process.Pid); err == nil { + _ = syscall.Kill(-pgid, syscall.SIGKILL) + } _ = dockerCmd.Process.Kill() } }() diff --git a/frontend/src/components/status/index.vue b/frontend/src/components/status/index.vue index 8d2bf4834..f38e58794 100644 --- a/frontend/src/components/status/index.vue +++ b/frontend/src/components/status/index.vue @@ -26,12 +26,8 @@ - - + +