github.com/secure-build/gitlab-runner@v12.5.0+incompatible/executors/custom/process/killer_unix.go (about) 1 // +build darwin dragonfly freebsd linux netbsd openbsd 2 3 package process 4 5 import ( 6 "os" 7 "syscall" 8 9 "gitlab.com/gitlab-org/gitlab-runner/common" 10 ) 11 12 type unixKiller struct { 13 logger common.BuildLogger 14 process *os.Process 15 } 16 17 func NewKiller(logger common.BuildLogger, process *os.Process) Killer { 18 return &unixKiller{ 19 logger: logger, 20 process: process, 21 } 22 } 23 24 func (pk *unixKiller) Terminate() { 25 err := pk.process.Signal(syscall.SIGTERM) 26 if err != nil { 27 pk.logger.Errorln("Failed to send SIGTERM signal:", err) 28 29 // try to kill right-after 30 pk.ForceKill() 31 } 32 } 33 34 func (pk *unixKiller) ForceKill() { 35 err := pk.process.Kill() 36 if err != nil { 37 pk.logger.Errorln("Failed to force-kill:", err) 38 } 39 }