shutdown
App shutdown hooks for `os.Signal` handling
About shutdown
Golang App Shutdown Hooks
This package provides convenient interface for working with os.Signal.
Multiple hooks can be applied, they will be called simultaneously on app shutdown.
Example
package main
import (
"log"
"time"
"github.com/ztrue/shutdown"
)
func main() {
shutdown.Add(func() {
// Write log.
// Stop writing files.
// Close connections.
// Etc.
log.Println("Stopping...")
log.Println("3")
time.Sleep(time.Second)
log.Println("2")
time.Sleep(time.Second)
log.Println("1")
time.Sleep(time.Second)
log.Println("0, stopped")
})
// App emulation.
go func() {
log.Println("App running, press CTRL + C to stop")
select {}
}()
shutdown.Listen()
}
Find more executable examples in examples dir.
How to Use
Import
import "github.com/ztrue/shutdown"
Add Shutdown Hook
shutdown.Add(func() {
log.Println("Stopping")
})
Remove Hook
key := shutdown.Add(func() {
log.Println("Stopping")
})
shutdown.Remove(key)
Hook With Custom Key
shutdown.AddWithKey("mykey", func() {
log.Println("Stopping")
})
shutdown.Remove("mykey")
Hook With Signal Parameter
shutdown.AddWithParam(func(os.Signal) {
log.Println("Stopping because of", os.Signal)
})
Listen for Specific Signals
shutdown.Listen(syscall.SIGINT, syscall.SIGTERM)
Reload
Reload service on SIGHUP
shutdown.AddWithParam(func(sig os.Signal) {
if sig == syscall.SIGHUP {
log.Println( "Reload conf...")
reloadConf()
// listen again signals to avoid shutdown
shutdown.Listen(syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP)
} else { // SIGINT, SIGTERM
log.Println("Stopping...")
}
})
shutdown.Listen(syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP)
Frequently Asked Questions
What is shutdown?
shutdown is a Utilities library for the Go programming language. App shutdown hooks for `os.Signal` handling
How do I install shutdown?
Install shutdown with the Go module system using `go get ztrue/shutdown`. Check the repository for the current installation instructions.
What category does shutdown belong to?
shutdown is listed under Utilities, specifically Utilities.