1
0
mirror of https://github.com/rclone/rclone.git synced 2025-11-29 05:47:23 +02:00

cmd: refactor and use sysdnotify in more commands

* cmd: refactor and use sysdnotify in more commands

Fixes #5117
This commit is contained in:
eNV25
2023-09-04 17:32:04 +02:00
committed by GitHub
parent 6afd7088d3
commit ad724463a5
8 changed files with 46 additions and 27 deletions

32
lib/systemd/notify.go Normal file
View File

@@ -0,0 +1,32 @@
package systemd
import (
"log"
"sync"
sysdnotify "github.com/iguanesolutions/go-systemd/v5/notify"
"github.com/rclone/rclone/lib/atexit"
)
// Notify systemd that the service is starting. This returns a
// function which should be called to notify that the service is
// stopping. This function will be called on exit if the service exits
// on a signal.
func Notify() func() {
if err := sysdnotify.Ready(); err != nil {
log.Printf("failed to notify ready to systemd: %v", err)
}
var finaliseOnce sync.Once
finalise := func() {
finaliseOnce.Do(func() {
if err := sysdnotify.Stopping(); err != nil {
log.Printf("failed to notify stopping to systemd: %v", err)
}
})
}
finaliseHandle := atexit.Register(finalise)
return func() {
atexit.Unregister(finaliseHandle)
finalise()
}
}