From 7ac1ea4e9bc1b399368a95649647a55c8093d649 Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Thu, 30 Jul 2020 11:25:35 -0400 Subject: [PATCH] 16306: Show logprefix like 'passenger@railsapi' for commands like 'sudo ... bundle exec passenger ...' Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- lib/boot/supervisor.go | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/lib/boot/supervisor.go b/lib/boot/supervisor.go index 2d76972336..5f92a65692 100644 --- a/lib/boot/supervisor.go +++ b/lib/boot/supervisor.go @@ -483,17 +483,34 @@ func (super *Supervisor) RunProgram(ctx context.Context, dir string, output io.W super.logger.WithField("command", cmdline).WithField("dir", dir).Info("executing") logprefix := prog - if logprefix == "setuidgid" && len(args) >= 3 { - logprefix = args[2] - } - logprefix = strings.TrimPrefix(logprefix, super.tempdir+"/bin/") - if logprefix == "bundle" && len(args) > 2 && args[0] == "exec" { - logprefix = args[1] - } else if logprefix == "arvados-server" && len(args) > 1 { - logprefix = args[0] - } - if !strings.HasPrefix(dir, "/") { - logprefix = dir + ": " + logprefix + { + if logprefix == "setuidgid" && len(args) >= 3 { + logprefix = args[2] + } + innerargs := args + if logprefix == "sudo" { + for i := 0; i < len(args); i++ { + if args[i] == "-u" { + i++ + } else if args[i] == "-E" || strings.Contains(args[i], "=") { + } else { + logprefix = args[i] + innerargs = args[i+1:] + break + } + } + } + logprefix = strings.TrimPrefix(logprefix, "/var/lib/arvados/bin/") + logprefix = strings.TrimPrefix(logprefix, super.tempdir+"/bin/") + if logprefix == "bundle" && len(innerargs) > 2 && innerargs[0] == "exec" { + _, dirbase := filepath.Split(dir) + logprefix = innerargs[1] + "@" + dirbase + } else if logprefix == "arvados-server" && len(args) > 1 { + logprefix = args[0] + } + if !strings.HasPrefix(dir, "/") { + logprefix = dir + ": " + logprefix + } } cmd := exec.Command(super.lookPath(prog), args...) -- 2.30.2