From 34797be7d7e39cbcabb7777bc7fa5c15d136282a Mon Sep 17 00:00:00 2001 From: Rob Napier Date: Fri, 13 Mar 2015 15:53:26 -0400 Subject: [PATCH 1/2] Run() should watch for SIGTERM on POSIX platforms --- service_darwin.go | 3 ++- service_systemd_linux.go | 3 ++- service_sysv_linux.go | 3 ++- service_upstart_linux.go | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/service_darwin.go b/service_darwin.go index 492dcc1..b1d96fa 100644 --- a/service_darwin.go +++ b/service_darwin.go @@ -10,6 +10,7 @@ import ( "os/exec" "os/signal" "os/user" + "syscall" "text/template" "time" @@ -172,7 +173,7 @@ func (s *darwinLaunchdService) Run() error { var sigChan = make(chan os.Signal, 3) - signal.Notify(sigChan, os.Interrupt, os.Kill) + signal.Notify(sigChan, syscall.SIGTERM, os.Interrupt, os.Kill) <-sigChan diff --git a/service_systemd_linux.go b/service_systemd_linux.go index c647871..81b303c 100644 --- a/service_systemd_linux.go +++ b/service_systemd_linux.go @@ -10,6 +10,7 @@ import ( "os" "os/exec" "os/signal" + "syscall" "text/template" "time" @@ -130,7 +131,7 @@ func (s *systemd) Run() (err error) { sigChan := make(chan os.Signal, 3) - signal.Notify(sigChan, os.Interrupt, os.Kill) + signal.Notify(sigChan, syscall.SIGTERM, os.Interrupt, os.Kill) <-sigChan diff --git a/service_sysv_linux.go b/service_sysv_linux.go index 5872ec3..f1cce56 100644 --- a/service_sysv_linux.go +++ b/service_sysv_linux.go @@ -10,6 +10,7 @@ import ( "os" "os/exec" "os/signal" + "syscall" "text/template" "time" @@ -131,7 +132,7 @@ func (s *sysv) Run() (err error) { sigChan := make(chan os.Signal, 3) - signal.Notify(sigChan, os.Interrupt, os.Kill) + signal.Notify(sigChan, syscall.SIGTERM, os.Interrupt, os.Kill) <-sigChan diff --git a/service_upstart_linux.go b/service_upstart_linux.go index e6ec161..8c436d8 100644 --- a/service_upstart_linux.go +++ b/service_upstart_linux.go @@ -10,6 +10,7 @@ import ( "os" "os/exec" "os/signal" + "syscall" "text/template" "time" @@ -122,7 +123,7 @@ func (s *upstart) Run() (err error) { sigChan := make(chan os.Signal, 3) - signal.Notify(sigChan, os.Interrupt, os.Kill) + signal.Notify(sigChan, syscall.SIGTERM, os.Interrupt, os.Kill) <-sigChan From 4d849b25a4f28395b588663706eec5263432d4b4 Mon Sep 17 00:00:00 2001 From: Rob Napier Date: Fri, 13 Mar 2015 17:52:30 -0400 Subject: [PATCH 2/2] Remove os.Kill from POSIX platforms where it can't be caught --- service_darwin.go | 2 +- service_systemd_linux.go | 2 +- service_sysv_linux.go | 2 +- service_upstart_linux.go | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/service_darwin.go b/service_darwin.go index b1d96fa..900327e 100644 --- a/service_darwin.go +++ b/service_darwin.go @@ -173,7 +173,7 @@ func (s *darwinLaunchdService) Run() error { var sigChan = make(chan os.Signal, 3) - signal.Notify(sigChan, syscall.SIGTERM, os.Interrupt, os.Kill) + signal.Notify(sigChan, syscall.SIGTERM, os.Interrupt) <-sigChan diff --git a/service_systemd_linux.go b/service_systemd_linux.go index 81b303c..557c144 100644 --- a/service_systemd_linux.go +++ b/service_systemd_linux.go @@ -131,7 +131,7 @@ func (s *systemd) Run() (err error) { sigChan := make(chan os.Signal, 3) - signal.Notify(sigChan, syscall.SIGTERM, os.Interrupt, os.Kill) + signal.Notify(sigChan, syscall.SIGTERM, os.Interrupt) <-sigChan diff --git a/service_sysv_linux.go b/service_sysv_linux.go index f1cce56..83027cb 100644 --- a/service_sysv_linux.go +++ b/service_sysv_linux.go @@ -132,7 +132,7 @@ func (s *sysv) Run() (err error) { sigChan := make(chan os.Signal, 3) - signal.Notify(sigChan, syscall.SIGTERM, os.Interrupt, os.Kill) + signal.Notify(sigChan, syscall.SIGTERM, os.Interrupt) <-sigChan diff --git a/service_upstart_linux.go b/service_upstart_linux.go index 8c436d8..09952ea 100644 --- a/service_upstart_linux.go +++ b/service_upstart_linux.go @@ -123,7 +123,7 @@ func (s *upstart) Run() (err error) { sigChan := make(chan os.Signal, 3) - signal.Notify(sigChan, syscall.SIGTERM, os.Interrupt, os.Kill) + signal.Notify(sigChan, syscall.SIGTERM, os.Interrupt) <-sigChan