Copyright © 2022 Oleg Pykhalov <go.wigust@gmail.com> Create a PID file after containerd is ready to serve requests. Fixes <https://issues.guix.gnu.org/38432>. --- a/cmd/containerd/command/notify_linux.go 1970-01-01 03:00:01.000000000 +0300 +++ b/cmd/containerd/command/notify_linux.go 2022-07-02 04:42:35.553753495 +0300 @@ -22,15 +22,22 @@ sd "github.com/coreos/go-systemd/v22/daemon" "github.com/containerd/containerd/log" + + "os" + "strconv" ) // notifyReady notifies systemd that the daemon is ready to serve requests func notifyReady(ctx context.Context) error { + pidFile, _ := os.Create("/run/containerd/containerd.pid") + defer pidFile.Close() + pidFile.WriteString(strconv.FormatInt(int64(os.Getpid()), 10)) return sdNotify(ctx, sd.SdNotifyReady) } // notifyStopping notifies systemd that the daemon is about to be stopped func notifyStopping(ctx context.Context) error { + os.Remove("/run/containerd/containerd.pid") return sdNotify(ctx, sd.SdNotifyStopping) }