@@ -32,7 +32,6 @@ import (
3232 "dbm-services/mysql/db-tools/dbactuator/pkg/util"
3333 "dbm-services/mysql/db-tools/dbactuator/pkg/util/osutil"
3434
35- "github.com/mitchellh/go-ps"
3635 "github.com/shirou/gopsutil/v3/process"
3736)
3837
@@ -271,34 +270,37 @@ func (u *UnInstallMySQLComp) ClearMachine() (err error) {
271270// @receiver u
272271// @return err
273272func (u * UnInstallMySQLComp ) KillDirtyProcess () (err error ) {
274- dirtyProcessNames := []string {
275- "mysql" ,
276- }
277- processes , err := ps .Processes ()
273+ mysqlClient := "mysql"
274+ processes , err := process .Processes ()
278275 if err != nil {
279276 return fmt .Errorf ("list processes failed, err:%s" , err .Error ())
280277 }
281- msgs := make ([]string , 0 )
282278 for _ , proc := range processes {
283- processName := proc .Executable ()
284- if ! cmutil .HasElem (processName , dirtyProcessNames ) {
279+ processName , err := proc .Name ()
280+ if err != nil {
281+ logger .Warn ("get process name failed, err:%s" )
285282 continue
286283 }
287-
288- p , err := process .NewProcess (int32 (proc .Pid ()))
289- if err != nil {
290- msgs = append (msgs , fmt .Sprintf ("process:%s, err:%s" , processName , err .Error ()))
284+ if processName != mysqlClient {
291285 continue
292286 }
293- if err := p . Terminate (); err != nil {
294- msg := fmt . Sprintf ( "terminate process %s failed, err:%s" , processName , err . Error ())
295- msgs = append ( msgs , msg )
287+ cmdline , errx := proc . Cmdline ()
288+ if errx != nil {
289+ logger . Warn ( "get process cmdline failed, err:%s" , errx . Error () )
296290 continue
297291 }
292+ for _ , port := range u .Params .Ports {
293+ if strings .Contains (cmdline , strconv .Itoa (port )) {
294+ if err := proc .Kill (); err != nil {
295+ if err == process .ErrorProcessNotRunning {
296+ continue
297+ }
298+ logger .Error ("terminate process %s failed, err:%s" , processName , err .Error ())
299+ continue
300+ }
301+ }
302+ }
298303 logger .Info ("success terminate dirty process %s" , processName )
299304 }
300- if len (msgs ) != 0 {
301- return fmt .Errorf ("failed kill %d processes, they are: %s" , len (msgs ), strings .Join (msgs , "\n " ))
302- }
303305 return nil
304306}
0 commit comments