123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // +build linux darwin
- package proc
- import (
- "os"
- "os/signal"
- "syscall"
- "github.com/tal-tech/go-zero/core/logx"
- )
- const timeFormat = "0102150405"
- func init() {
- go func() {
- var profiler Stopper
- // https://golang.org/pkg/os/signal/#Notify
- signals := make(chan os.Signal, 1)
- signal.Notify(signals, syscall.SIGUSR1, syscall.SIGUSR2, syscall.SIGTERM)
- for {
- v := <-signals
- switch v {
- case syscall.SIGUSR1:
- dumpGoroutines()
- case syscall.SIGUSR2:
- if profiler == nil {
- profiler = StartProfile()
- } else {
- profiler.Stop()
- profiler = nil
- }
- case syscall.SIGTERM:
- gracefulStop(signals)
- default:
- logx.Error("Got unregistered signal:", v)
- }
- }
- }()
- }
|