From 2304d2069e1d75df25af875efb64dacdb358bfac Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Thu, 29 May 2025 18:03:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20nohup=E5=90=AF=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../network_element/service/ne_version.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/modules/network_element/service/ne_version.go b/src/modules/network_element/service/ne_version.go index 93b42e5c..5729c11b 100644 --- a/src/modules/network_element/service/ne_version.go +++ b/src/modules/network_element/service/ne_version.go @@ -3,8 +3,10 @@ package service import ( "fmt" "os" + "os/exec" "path/filepath" "strings" + "syscall" "time" "be.ems/src/framework/cmd" @@ -267,10 +269,18 @@ func (r NeVersion) operateCommand(action, neType string, neFilePaths []string) ( } // 删除软件包 omcStrArr = append(omcStrArr, fmt.Sprintf("sudo rm %s", strings.Join(neFilePaths, " "))) - file.WriterFileTXT(fmt.Sprintf("#!/bin/bash \n%s", strings.Join(omcStrArr, " && ")), "/tmp/operate_omc.sh") + + // file.WriterFileTXT(fmt.Sprintf("#!/bin/bash \n%s", strings.Join(omcStrArr, " && ")), "/tmp/operate_omc.sh") + // 使用 nohup 启动进程 + cmd := exec.Command("nohup", "sh", "-c", fmt.Sprintf("sleep 2s && %s", strings.Join(omcStrArr, " && ")), "&") + cmd.SysProcAttr = &syscall.SysProcAttr{ + Setpgid: true, // 使进程脱离父进程的进程组 + } + cmd.Start() // 启动子进程 + // 2s后执行omc相关命令 - cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo rm -f /tmp/operate_run_%s_omc.out \n", action)) - cmdStrArr = append(cmdStrArr, fmt.Sprintf("bash /tmp/operate_omc.sh > /tmp/operate_run_%s_omc.out 2>&1 & \n", action)) + // cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo rm -f /tmp/operate_run_%s_omc.out \n", action)) + // cmdStrArr = append(cmdStrArr, fmt.Sprintf("bash /tmp/operate_omc.sh > /tmp/operate_run_%s_omc.out 2>&1 & \n", action)) cmdStrArr = append(cmdStrArr, fmt.Sprintf("echo '%s' \n", okFlagStr)) return okFlagStr, cmdStrArr, nil } else if neType == "IMS" {