|
|
@@ -45,11 +45,11 @@ func SingleInstanceRun() { // 非阻塞单实例运行
|
|
|
}
|
|
|
|
|
|
ch := make(chan os.Signal, 1)
|
|
|
- signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
|
|
|
+ signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM, syscall.SIGUSR1)
|
|
|
go func() {
|
|
|
for s := range ch {
|
|
|
switch s {
|
|
|
- case syscall.SIGINT, syscall.SIGTERM:
|
|
|
+ case syscall.SIGINT, syscall.SIGTERM, syscall.SIGUSR1:
|
|
|
Logger.Infof("Received signal: %v", s)
|
|
|
mux.Close()
|
|
|
os.RemoveAll(lockFile)
|
|
|
@@ -70,3 +70,9 @@ func IsExit1() bool {
|
|
|
func IsExit2() <-chan struct{} {
|
|
|
return exitCh
|
|
|
}
|
|
|
+
|
|
|
+func SafeExit() { // 安全退出
|
|
|
+ pid := os.Getpid()
|
|
|
+ syscall.Kill(pid, syscall.SIGUSR1)
|
|
|
+ <-exitCh
|
|
|
+}
|