From 7f483b7d5a6bd88ea35f5dcf1a5fea5d165044fe Mon Sep 17 00:00:00 2001 From: lixiang172 Date: Tue, 12 Feb 2019 15:22:06 +0800 Subject: [PATCH 18/27] containerd-shim: Dump log to file when docker received signal reason: Dump stack log to file when docker received "kill -SIGUSR1 PID" signal The name of log files is "shim-stack-[time].log". The log file can be found at: /run/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/container-id/shim-stack-[time].log Change-Id: I6d7e03c9a0fd36e9a76f1dd45cfd5312985d03f8 Signed-off-by: lixiang172 --- cmd/containerd-shim/main_unix.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmd/containerd-shim/main_unix.go b/cmd/containerd-shim/main_unix.go index d1f41b0..38b3eb4 100644 --- a/cmd/containerd-shim/main_unix.go +++ b/cmd/containerd-shim/main_unix.go @@ -246,6 +246,8 @@ func handleSignals(logger *logrus.Entry, signals chan os.Signal, server *ttrpc.S } } +const stacksLogNameTemplate = "shim-stacks-%s.log" + func dumpStacks(logger *logrus.Entry) { var ( buf []byte @@ -258,6 +260,7 @@ func dumpStacks(logger *logrus.Entry) { bufferLen *= 2 } buf = buf[:stackSize] + ioutil.WriteFile(fmt.Sprintf(stacksLogNameTemplate, strings.Replace(time.Now().Format(time.RFC3339), ":", "", -1)), buf, 0600) logger.Infof("=== BEGIN goroutine stack dump ===\n%s\n=== END goroutine stack dump ===", buf) } -- 2.7.4.3