telegraf/internal/process/process_posix.go

28 lines
554 B
Go
Raw Normal View History

//go:build !windows
2020-06-05 07:09:22 +08:00
package process
import (
2020-07-02 23:59:29 +08:00
"context"
2020-06-05 07:09:22 +08:00
"os/exec"
"syscall"
"time"
)
func (p *Process) gracefulStop(ctx context.Context, cmd *exec.Cmd, timeout time.Duration) {
2020-07-02 23:59:29 +08:00
select {
case <-time.After(timeout):
if err := cmd.Process.Signal(syscall.SIGTERM); err != nil {
p.Log.Errorf("Error after sending SIGTERM signal to process: %v", err)
}
2020-07-02 23:59:29 +08:00
case <-ctx.Done():
}
select {
case <-time.After(timeout):
if err := cmd.Process.Kill(); err != nil {
p.Log.Errorf("Error after killing process: %v", err)
}
2020-07-02 23:59:29 +08:00
case <-ctx.Done():
}
2020-06-05 07:09:22 +08:00
}